White Screen (beta 4)

Started by Nop, December 14, 2006, 15:58:05

Previous topic - Next topic

elias

Bummer. I still need some information from you, though:

1. Is it possible that I can access your game client somehow? Preferably with source, but being able to swap lwjgl.jar/dll is sufficient.
2. How is your Display created?
3. Are you doing a setFullscreen(true) before or after create()?
4. How is your PixelFormat constructed? Are you asking for a depth, stencil and alpha buffer (if you use any of those?).
3. I'm trying to simplify the LWJGL init code to match the NeHe tutorials which I assume works pretty much everywhere. Is it possible you could test the second NeHe tutorial (he supplies pre-built exe files) in fullscreen mode?

I did some more tweaking to the lwjgl.jar and dll, in case you want to try them out:

http://odense.kollegienet.dk/~naur/lwjgl.dll
http://odense.kollegienet.dk/~naur/lwjgl.jar

- elias

Nop

Quote from: elias on December 23, 2006, 19:49:10
1. Is it possible that I can access your game client somehow? Preferably with source, but being able to swap lwjgl.jar/dll is sufficient.

I am preparing a test account and configuration. This is a little tricky as the client usually is signed and self-installing via webstart. I'll PM you with the details when it is working.

Quote from: elias on December 23, 2006, 19:49:10
2. How is your Display created?

DisplayMode[] modes = Display.getAvailableDisplayModes();
...
Display.setDisplayMode( modes[i] );
...
Display.create();


Quote from: elias on December 23, 2006, 19:49:10
3. Are you doing a setFullscreen(true) before or after create()?

setFullscreen(true) is called after create() and also after initializing the openGL matrix, viewport etc.

Quote from: elias on December 23, 2006, 19:49:10
4. How is your PixelFormat constructed? Are you asking for a depth, stencil and alpha buffer (if you use any of those?).
I still don't understand the question. A search for PixelFormat brings up no matches in my project. So I guess it uses some sort of default. At what point should a PixelFormat be constructed?
Quote from: elias on December 23, 2006, 19:49:10
3. I'm trying to simplify the LWJGL init code to match the NeHe tutorials which I assume works pretty much everywhere. Is it possible you could test the second NeHe tutorial (he supplies pre-built exe files) in fullscreen mode?
I am not familiar with these tutorials. Can you give me a direct link so I can be sure we are talking about the same thing?
Quote from: elias on December 23, 2006, 19:49:10
I did some more tweaking to the lwjgl.jar and dll, in case you want to try them out:
http://odense.kollegienet.dk/~naur/lwjgl.dll
http://odense.kollegienet.dk/~naur/lwjgl.jar

Thank you for your effort, I have sent them to the player for testing.

elias

Ok, to make diagnosing easier, I'd like you  to try:

1. Calling setFullscreen(true) before Display.create().
2. Only using DisplayModes where getBitsPerPixel() equals that of the initial DisplayMode (the desktop bit depth). Use Display.getDisplayMode() before the first switch (Display.create) to get the default display mode. This makes sure that you don't accidently use e.g. 16 bit for fullscreen and 32 bit for windowed mode.

The no-arg Display.create() uses a default PixelFormat which is fine if you don't enable GL_ALPHA_TEST nor GL_STENCIL_TEST.

This is the link to the code for the second NeHe tutorial:

http://nehe.gamedev.net/data/lessons/vc/lesson02.zip

- elias

Nop


I have made the changes you suggested to the client and I have set up a test account for you.

You should have received the access information by PM.

elias

Thank you. Dores this version still pose problems?

- elias

Nop


No, the player has reported that both modes work in this version.

Do you think it was a matter of the order of initialization? Or rather a mismatched color depth?

elias

Hard to tell for sure, but I'm guessing that the color depth was the problem. The reason I wanted you to swap setFullscreen() and create() was to minimize the number of native calls and display mode switches. With create() first a window and context was created and then, on setFullscreen, the mode would be switched, another (fullscreen) window created and the old context attached to the window. With setFullscreen first create() would make the switch, create a window and context, which is simpler.

I'm glad it works again, rc1 should be out soon without the (apparently) extra hacks I did to test. I'd be happy if you could test that version and report back if you run into problems again.

- elias