Hi folks,
I started using JOGL2 on a Win7, 64b computer. I retrieved a window-i586 release since Win7 is supposed to be able to run 32 bit binaries. It seems that the depth buffer does not work properly: as shown by this image [1], the center of the gear is rendered before its edge: When I turn around the gears, the gears are always displayed "sorted", meaning the blue is always on top of green, which is on top of red gear, which is consistent with a GL method calls in the sample program (red, green and then blue).I confirm that gl.glEnable(GL2.GL_DEPTH_TEST); is in the code. I made the same test on a WinXP, 32b computer: it works properly, so Win7 or 64b suspected :) All these problems reminds me a related discussion concerning Jzy3d, using JOGL-1.1.1 [2], where a user does not have the feedback buffer working properly on a Win7, 32b computer. If you see anything weird in my setting below, please let me know! Thanks in advance! Martin ------- [1] http://martin.pernollet.free.fr/jogl/gear-problem.png [2] http://code.google.com/p/jzy3d/issues/detail?id=10 ------- Gear.java output: Gears: Init: AWT-GLCanvas[ class javax.media.nativewindow.awt.AWTGraphicsConfiguration[class javax.media.nativewindow.awt.AWTGraphicsScreen[class javax.media.nativewindow.awt.AWTGraphicsDevice[type AWT, awtDevice Win32GraphicsDevice[screen=0], handle 0x0], idx 0], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], sun.awt.Win32GraphicsConfig@169e11[dev=Win32GraphicsDevice[screen=0],pixfmt=0], encapsulated WindowsWGLGraphicsConfiguration[class javax.media.nativewindow.DefaultGraphicsScreen[class javax.media.nativewindow.windows.WindowsGraphicsDevice[type Windows, handle 0x0], idx 0], pfdID 1, wglChoosen true, requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 8, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: false, Stereo: false, HardwareAccelerated: true, DepthBits: 0, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: true, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false]]], com.jogamp.opengl.impl.windows.wgl.WindowsOnscreenWGLDrawable, GLAnimatorControl: com.jogamp.opengl.util.Animator@743399, GLEventListeners num 1 [demos.gears.Gears@eee36c[init true], ]] Chosen GLCapabilities: GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false] INIT GL IS: com.jogamp.opengl.impl.gl4.GL4bcImpl GL_VENDOR: Intel GL_RENDERER: Intel(R) Graphics Media Accelerator HD GL_VERSION: 2.1.0 - Build 8.15.10.2021 Gears: Reshape: 0/0 284x262 Gears: Dispose ------- GLInfo.java output: GLProfile[GL2/GL2] GLInfo.start() GLProfile[GL2/GL2] GLCapabilities PRE : GLCapabilities[Capabilities[Onscreen: true, Red: 5, Green: 6, Blue: 5, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false] GLProfile[GL2/GL2] GLWindow : NEWT-GLWindow[ Helper: GLAnimatorControl: null, GLEventListeners num 0 [], Drawable: null, Context: null] Detected screen size 1366x768 GLProfile[GL2/GL2] GL Profile Static: GLAvailability[Native[GL4bc false, GL4 false, GL3bc false, GL3 false, GL2 true[1.5 (compatibility profile, any, old)], GL2ES1 true, GLES1 false, GL2ES2 true, GLES2 false], Profiles[GLProfile[GL2ES2/GL2ES12], GLProfile[GL2ES1/GL2ES12], GLProfile[GL2/GL2], GLProfile[GL2GL3/GL2], , default GLProfile[GL2/GL2]]] GLProfile[GL2/GL2] GL Profile Static - MaxFixedFunc: GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL Profile Static - MaxProgrammable: GLProfile[GL2/GL2] GLProfile[GL2/GL2] GLCapabilities POST: GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 8, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 16, Green Accum: 16, Blue Accum: 16, Alpha Accum: 16, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: true, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false] GLProfile[GL2/GL2] GL Profile: GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL:com.jogamp.opengl.impl.gl4.GL4bcImpl@15ff48b GLProfile[GL2/GL2] GLProfile[GL2/GL2] Context GL Version: 2.1 (compatibility profile, any, old) - 2.1.0 - Build 8.15.10.2021 GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_VERSION: 2.1.0 - Build 8.15.10.2021 GLProfile[GL2/GL2] GL_EXTENSIONS: GLProfile[GL2/GL2] GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_blend_color GL_EXT_abgr GL_EXT_texture3D GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array GL_SGIS_texture_edge_clamp GL_SGIS_generate_mipmap GL_EXT_draw_range_elements GL_SGIS_texture_lod GL_EXT_rescale_normal GL_EXT_packed_pixels GL_EXT_separate_specular_color GL_ARB_multitexture GL_EXT_texture_env_combine GL_EXT_bgra GL_EXT_blend_func_separate GL_EXT_secondary_color GL_EXT_fog_coord GL_EXT_texture_env_add GL_ARB_texture_cube_map GL_ARB_transpose_matrix GL_ARB_texture_env_add GL_IBM_texture_mirrored_repeat GL_EXT_multi_draw_arrays GL_NV_blend_square GL_ARB_texture_compression GL_3DFX_texture_compression_FXT1 GL_EXT_texture_filter_anisotropic GL_ARB_texture_border_clamp GL_ARB_point_parameters GL_ARB_texture_env_combine GL_ARB_texture_env_dot3 GL_ARB_texture_env_crossbar GL_EXT_texture_compression_s3tc GL_ARB_shadow GL_ARB_window_pos GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_ARB_vertex_program GL_EXT_texture_rectangle GL_ARB_fragment_program GL_EXT_stencil_two_side GL_ATI_separate_stencil GL_ARB_vertex_buffer_object GL_EXT_texture_lod_bias GL_ARB_occlusion_query GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ARB_texture_non_power_of_two GL_ARB_vertex_shader GL_NV_texgen_reflection GL_ARB_point_sprite GL_EXT_blend_equation_separate GL_ARB_depth_texture GL_ARB_texture_rectangle GL_ARB_draw_buffers GL_ARB_pixel_buffer_object GL_WIN_swap_hint GL_EXT_framebuffer_object GL_EXT_texture_sRGB GL_ARB_color_buffer_float GL_ARB_half_float_pixel GL_ARB_texture_float GL_NV_conditional_render GL_EXT_texture_swizzle GL_ARB_draw_instanced GLProfile[GL2/GL2] GLProfile[GL2/GL2] Platform EXTENSIONS: GLProfile[GL2/GL2] WGL_ARB_buffer_region WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_pixel_format WGL_ARB_pbuffer WGL_EXT_extensions_string WGL_EXT_swap_control WGL_ARB_pixel_format_float GLProfile[GL2/GL2] GLProfile[GL2/GL2] Availability Tests: GLProfile[GL2/GL2] glConvolutionFilter2D: false GLProfile[GL2/GL2] Fixed: glBegin: true GLProfile[GL2/GL2] ES1 : glClearColorx: false GLProfile[GL2/GL2] GLSL : glUseProgram: true GLProfile[GL2/GL2] GL_ARB_vertex_array_object: false GLProfile[GL2/GL2] GL_ARB_vertex_array_object: glBindVertexArray: false GLProfile[GL2/GL2] GL_EXT_gpu_shader4: false GLProfile[GL2/GL2] GL_EXT_gpu_shader4: glBindFragDataLocationfalse GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_VERSION_3_0: false, complete: false GLProfile[GL2/GL2] glBeginConditionalRender: true GLProfile[GL2/GL2] GL_ARB_framebuffer_object: false GLProfile[GL2/GL2] glIsRenderbuffer: true GLProfile[GL2/GL2] GL_ARB_map_buffer_range: false GLProfile[GL2/GL2] glMapBufferRange: false GLProfile[GL2/GL2] GL_ARB_vertex_array_object: false GLProfile[GL2/GL2] glBindVertexArray: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_VERSION_3_1: false, complete: false GLProfile[GL2/GL2] glDrawArraysInstanced: true GLProfile[GL2/GL2] GL_ARB_uniform_buffer_object: false GLProfile[GL2/GL2] glGetUniformIndices: false GLProfile[GL2/GL2] GL_ARB_copy_buffer: false GLProfile[GL2/GL2] glCopyBufferSubData: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_VERSION_3_2: false, complete: false GLProfile[GL2/GL2] GL_ARB_vertex_array_bgra: false GLProfile[GL2/GL2] GL_ARB_draw_elements_base_vertex: false GLProfile[GL2/GL2] glDrawElementsBaseVertex: false GLProfile[GL2/GL2] GL_ARB_fragment_coord_conventions: false GLProfile[GL2/GL2] GL_ARB_provoking_vertex: false GLProfile[GL2/GL2] glProvokingVertex: false GLProfile[GL2/GL2] GL_ARB_seamless_cube_map: false GLProfile[GL2/GL2] GL_ARB_texture_multisample: false GLProfile[GL2/GL2] glTexImage2DMultisample: false GLProfile[GL2/GL2] GL_ARB_depth_clamp: false GLProfile[GL2/GL2] GL_ARB_geometry_shader4: false GLProfile[GL2/GL2] glProgramParameteri: false GLProfile[GL2/GL2] GL_ARB_sync: false GLProfile[GL2/GL2] glFenceSync: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_VERSION_3_3: false, complete: false GLProfile[GL2/GL2] GL_ARB_shader_bit_encoding: false GLProfile[GL2/GL2] GL_ARB_blend_func_extended: false GLProfile[GL2/GL2] GL_ARB_explicit_attrib_location: false GLProfile[GL2/GL2] GL_ARB_occlusion_query2: false GLProfile[GL2/GL2] GL_ARB_sampler_objects: false GLProfile[GL2/GL2] GL_ARB_texture_rgb10_a2ui: false GLProfile[GL2/GL2] GL_ARB_texture_swizzle: false GLProfile[GL2/GL2] GL_ARB_timer_query: false GLProfile[GL2/GL2] GL_ARB_instanced_arrays: false GLProfile[GL2/GL2] GL_ARB_vertex_type_2_10_10_10_rev: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_VERSION_4_0: false, complete: false GLProfile[GL2/GL2] GL_ARB_texture_query_lod: false GLProfile[GL2/GL2] GL_ARB_draw_buffers_blend: false GLProfile[GL2/GL2] GL_ARB_draw_indirect: false GLProfile[GL2/GL2] GL_ARB_gpu_shader5: false GLProfile[GL2/GL2] GL_ARB_gpu_shader_fp64: false GLProfile[GL2/GL2] GL_ARB_sample_shading: false GLProfile[GL2/GL2] GL_ARB_shader_subroutine: false GLProfile[GL2/GL2] GL_ARB_tessellation_shader: false GLProfile[GL2/GL2] GL_ARB_texture_buffer_object_rgb32: false GLProfile[GL2/GL2] GL_ARB_texture_cube_map_array: false GLProfile[GL2/GL2] GL_ARB_texture_gather: false GLProfile[GL2/GL2] GL_ARB_transform_feedback2: false GLProfile[GL2/GL2] GL_ARB_transform_feedback3: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_AMD_vertex_shader_tessellator: false GLProfile[GL2/GL2] glTessellationFactorAMD: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_VERSION_4_1: false, complete: false GLProfile[GL2/GL2] GL_ARB_ES2_compatibility: false GLProfile[GL2/GL2] GL_ARB_get_program_binary: false GLProfile[GL2/GL2] GL_ARB_separate_shader_objects: false GLProfile[GL2/GL2] GL_ARB_shader_precision: false GLProfile[GL2/GL2] GL_ARB_vertex_attrib_64bit: false GLProfile[GL2/GL2] GL_ARB_viewport_array: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GL_AMD_vertex_shader_tessellator: false GLProfile[GL2/GL2] glTessellationFactorAMD: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] EGL : eglCreateContext: false GLProfile[GL2/GL2] EGLEx: eglCreateImage: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] GLX : glXCreateWindow: false GLProfile[GL2/GL2] GLX_ARB_create_context: false GLProfile[GL2/GL2] GLProfile[GL2/GL2] WGL : wglCreateContext: true GLProfile[GL2/GL2] GLProfile[GL2/GL2] CGL : CGLCreateContext: false GLProfile[GL2/GL2] display: 0 GLProfile[GL2/GL2] display: 1 GLProfile[GL2/GL2] GLInfo.run() 1 GLProfile[GL2/GL2] GLInfo.run() 2 GLProfile[GL2/GL2] display: 2 GLProfile[GL2/GL2] GLInfo.run() 3 GLProfile[GL2/GL2] display: 3 GLProfile[GL2/GL2] dispose GLProfile[GL2/GL2] GLInfo shut down cleanly. |
Administrator
|
Hi!
Do you use the same graphics chip on XP? GL_VENDOR: Intel GL_RENDERER: Intel(R) Graphics Media Accelerator HD
Julien Gouesse | Personal blog | Website
|
Thanks for your reply.
Unfortunately not, my desktop computer is running with: GL_VENDOR: NVIDIA Corporation GL_RENDERER: GeForce 7300 LE/PCI/SSE2 GL_VERSION: 2.0.3 Gears: Reshape: 0/0 292x273 The first one is my laptop graphic's card. Martin |
Administrator
|
You're welcome and I feel concerned as I want to use jzy3d. The problem is that the main impacting difference is then not the operating system but rather the graphics chip. Intel on-board graphics chips are known to be quite buggy unfortunately. In commercial products, I simply advise to use only NVIDIA and ATI graphics cards (even though they have their own bugs especially on laptops).
Julien Gouesse | Personal blog | Website
|
Administrator
|
In reply to this post by Martin
I second gouessej's warning about Intel integrated graphics. We've had many problems with it at work. Usually we can come up with a workaround that changes the GL settings if we detect Intel, but it can take some experimentation.
Here are the kinds of things we've had to do in the past to work around Intel integrated driver bugs: - Turn off vertex arrays in TextRenderer to avoid a crash, e.g. textrenderer.setUseVertexArrays( false ); - Comment out some GL calls and let the Intel driver pick the default, e.g. // commenting these in makes all polygons black, but only on Intel Mobile 965 Express // gl.glShadeModel( GL.GL_FLAT ); // gl.glPolygonMode( GL.GL_FRONT, GL.GL_FILL ); - Tell users not to dock/undock their laptops while running our app (sometimes the driver returns an unaccelerated context) We've never had similar problems from ATI or NVIDIA drivers. Sometimes we get a Java hotspot crash on an ATI or NVIDIA card with an old driver, but a driver update from the manufacturer has always fixed it. |
actually I understood there are 2 graphical chips on my laptop: Intel(R) Graphics Media Accelerator HD NVIDIA GeForce 310M I went into the NVIDIA settings, marked a checkbox asking to use it for 3D rendering, but nothing changed after reboot. Is there a way to force JOGL on this chip?
2010/10/20 Wade Walker [via jogamp] <ml-node+1739740-841475364-243031@n3.nabble.com> I second gouessej's warning about Intel integrated graphics. We've had many problems with it at work. Usually we can come up with a workaround that changes the GL settings if we detect Intel, but it can take some experimentation. Here are the kinds of things we've had to do in the past to work around Intel integrated driver bugs: - Turn off vertex arrays in TextRenderer to avoid a crash, e.g. textrenderer.setUseVertexArrays( false ); - Comment out some GL calls and let the Intel driver pick the default, e.g. // commenting these in makes all polygons black, but only on Intel Mobile 965 Express // gl.glShadeModel( GL.GL_FLAT ); // gl.glPolygonMode( GL.GL_FRONT, GL.GL_FILL ); - Tell users not to dock/undock their laptops while running our app (sometimes the driver returns an unaccelerated context) I plugged the laptop, and even asked: GLCapabilities caps = new GLCapabilities(GLProfile.getDefault()); caps.setHardwareAccelerated(true); GLCanvas canvas = new GLCanvas(caps); without more success! I'll try downloading the 32bit version to see how that work (jogl 1-1-1.rc3 in 32 bits works well) Thanks for your suggestions. Martin |
Hi,
It seems there's no win-32 release in the last 5 jogl builds, is that normal? http://jogamp.org/deployment/autobuilds/jogl-b187-2010-09-30_18-13-01/build/ Regards, Martin |
Administrator
|
The 32-bit Windows release should be the jogl-2.0-pre-20101001-windows-i586.zip (it seems to be there at http://jogamp.org/deployment/autobuilds/jogl-b187-2010-09-30_18-13-01/build/).
To me, "i586" doesn't clearly mean 32-bit, but that's the way the old JOGL 1.1.1a was named too (see http://download.java.net/media/jogl/builds/archive/jsr-231-1.1.1a/ for example). |
Right, thanks for the remark :)
Martin |
I have been able to try the demo on another Win7-64b computer which worked well, so it should only be a problem of accessing the appropriate chip rather than a system/arch version.
Regards, Martin |
...for those whose only option is an Intel graphics chip, the following might be useful:
After having this exact problem on my rather old laptop, it turned out that the GLCapabilities object I was using to create my GLCanvas was asking for a 24-bit depth buffer: GLProfile profile = GLProfile.get(GLProfile.GL2); GLCapabilities capabilities = new GLCapabilities(profile); System.out.println("caps: " + capabilities.getDepthBits()); // Returns 24 Now I'm assuming that my graphics chip can't fulfil this request, because later when I come to query the actual depth buffer size, it's zero... public void init(GLAutoDrawable drawable) { ... GL2 gl2 = drawable.getGL().getGL2(); IntBuffer buff = IntBuffer.allocate(1); gl2.glGetIntegerv(GL2.GL_DEPTH_BITS,buff); System.out.println("Depth buffer: " + buff.get(0)); // Prints 0; oops, our depth buffer looks a little shallow... ... } I was able to work around this on my system by changing the depth requested by the GLCapabilities: capabilities.setDepthBits(16); // Gears now render correctly! I'm not yet sure as to the ideal way to incorporate this workaround in my code; it'd be nice if I could find out in advance the best non-zero depth buffer value to ask for. But for the moment this seems to work. Hope it's useful to someone. |
Administrator
|
Hi!
Thank you very much for the tip. If you reproduce your problem with it, then it will be considered as a bug except if the driver "says" your chip supports 24 bits whereas it's wrong. Do you see what I mean? GLCapabilities field "depth bits" is at 24 by default and is updated only when GLCanvas.addNotify() is called. GraphicsConfigurationFactory should fetch the available GLCapabilities instance. If it is a bug, we should investigate there. Edit.: I have looked at the source code, the DefaultCapabilitiesChooser is called in all GraphicsConfigurationFactory implementations and it does the job correctly. It is highly probable that your crappy chip "says" it supports 24 bits. I cannot reproduce your bug, I only use JOGL 2 with NVIDIA, ATI, Matrox and VIA/SiS graphic chips. Sven, is it a driver bug? markm, please enable the debug pipeline so that we can see which GLCapabilities instances are available on your machine.
Julien Gouesse | Personal blog | Website
|
Mark,
Thank you very much for your suggestion. I'll tell you how that works as soon as I have time to try it. Best regards, Martin |
Administrator
|
In reply to this post by markm
On Thursday, November 18, 2010 23:28:41 markm [via jogamp] wrote:
> > ...for those whose only option is an Intel graphics chip, the following might be useful: > After having this exact problem on my rather old laptop, it turned out that the GLCapabilities object I was using to create my GLCanvas was asking for a 24-bit depth buffer: > > GLProfile profile = GLProfile.get(GLProfile.GL2); > GLCapabilities capabilities = new GLCapabilities(profile); > System.out.println("caps: " + capabilities.getDepthBits()); // Returns 24 > > Now I'm assuming that my graphics chip can't fulfil this request, because later when I come to query the actual depth buffer size, it's zero... > > public void init(GLAutoDrawable drawable) { > ... > GL2 gl2 = drawable.getGL().getGL2(); > IntBuffer buff = IntBuffer.allocate(1); > gl2.glGetIntegerv(GL2.GL_DEPTH_BITS,buff); > System.out.println("Depth buffer: " + buff.get(0)); // Prints 0; oops, our depth buffer looks a little shallow... > ... > } > > I was able to work around this on my system by changing the depth requested by the GLCapabilities: > > capabilities.setDepthBits(16); // Gears now render correctly! > > I'm not yet sure as to the ideal way to incorporate this workaround in my code; it'd be nice if I could find out in advance the best non-zero depth buffer value to ask for. But for the moment this seems to work. Hope it's useful to someone. Thats a very good one! I guess we should lower the level to 16 as the min requirement. The highest available will be picked up anyways. ~Sven |
In reply to this post by markm
On 11/18/2010 4:28 PM, markm [via jogamp] wrote:
> ...for those whose only option is an Intel graphics chip, the > following might be useful: > After having this exact problem on my rather old laptop, it turned out > that the GLCapabilities object I was using to create my GLCanvas was > asking for a 24-bit depth buffer: > > GLProfile profile = GLProfile.get(GLProfile.GL2); > GLCapabilities capabilities = new GLCapabilities(profile); > System.out.println("caps: " + capabilities.getDepthBits()); // > Returns 24 > > Now I'm assuming that my graphics chip can't fulfil this request, > because later when I come to query the actual depth buffer size, it's > zero... > > public void init(GLAutoDrawable drawable) { > ... > GL2 gl2 = drawable.getGL().getGL2(); > IntBuffer buff = IntBuffer.allocate(1); > gl2.glGetIntegerv(GL2.GL_DEPTH_BITS,buff); > System.out.println("Depth buffer: " + buff.get(0)); // Prints 0; > oops, our depth buffer looks a little shallow... > ... > } > > I was able to work around this on my system by changing the depth > requested by the GLCapabilities: > > capabilities.setDepthBits(16); // Gears now render correctly! > > I'm not yet sure as to the ideal way to incorporate this workaround in > my code; it'd be nice if I could find out in advance the best non-zero > depth buffer value to ask for. But for the moment this seems to work. > Hope it's useful to someone. > Thanks for the excellent suggestion. That fixed the rendering on a program I'm working on (using JOGL version 1.1.1). I did a little experimenting and here are the results: I ran the following code several times with different values for depthBits (values of 8, 16, 24 and 32): GLCapabilities capabilities = new GLCapabilities(); if (System.getProperty("os.name").contains("Windows")) { int depthBits = 16; // tried values of 8, 16, 24 and 32 capabilities.setDepthBits(depthBits); } glCanvas = new GLCanvas(capabilities); glCanvas.addGLEventListener(glEvtListener); ... Then in the GLEventListener's init method:......display the value... IntBuffer ibuff = IntBuffer.allocate(1); gl.glGetIntegerv(GL.GL_DEPTH_BITS, ibuff); System.out.println("depth bits="+ibuff.get(0)); and the results were: with depthBits set to either 8, 16 or 32 it would end up as 16 and the graphics would display properly; setting depthBits to 24 (which was also the default without setting it) then the printout would show 24 (different than your result showing 0) and the graphics were all goofed up as far as hidden surface removal. Here is information about my system: using Jogl version 1.1.1 Op sys info: Windows Vista Home Premium 64 bit operating system OpenGL info: via gl.glGetString(GL.GL_...) with GL.GL_VENDOR, GL.GL_RENDERER, GL.GL_VERSION, and GL.GL_EXTENSIONS respectively Vendor: Intel Renderer: Intel(R) G45/G43 Express Chipset Version: 2.1.0 - Build 8.15.10.2189 Extensions: GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_blend_color GL_EXT_abgr GL_EXT_texture3D GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array GL_SGIS_texture_edge_clamp GL_SGIS_generate_mipmap GL_EXT_draw_range_elements GL_SGIS_texture_lod GL_EXT_rescale_normal GL_EXT_packed_pixels GL_EXT_texture_edge_clamp GL_EXT_separate_specular_color GL_ARB_multitexture GL_EXT_texture_env_combine GL_EXT_bgra GL_EXT_blend_func_separate GL_EXT_secondary_color GL_EXT_fog_coord GL_EXT_texture_env_add GL_ARB_texture_cube_map GL_ARB_transpose_matrix GL_ARB_texture_env_add GL_IBM_texture_mirrored_repeat GL_EXT_multi_draw_arrays GL_NV_blend_square GL_ARB_texture_compression GL_3DFX_texture_compression_FXT1 GL_EXT_texture_filter_anisotropic GL_ARB_texture_border_clamp GL_ARB_point_parameters GL_ARB_texture_env_combine GL_ARB_texture_env_dot3 GL_ARB_texture_env_crossbar GL_EXT_texture_compression_s3tc GL_ARB_shadow GL_ARB_window_pos GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_ARB_vertex_program GL_EXT_texture_rectangle GL_ARB_fragment_program GL_EXT_stencil_two_side GL_ATI_separate_stencil GL_ARB_vertex_buffer_object GL_EXT_texture_lod_bias GL_ARB_occlusion_query GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ARB_texture_non_power_of_two GL_ARB_vertex_shader GL_NV_texgen_reflection GL_ARB_point_sprite GL_EXT_blend_equation_separate GL_ARB_depth_texture GL_ARB_texture_rectangle GL_ARB_draw_buffers GL_ARB_color_buffer_float GL_ARB_half_float_pixel GL_ARB_texture_float GL_ARB_pixel_buffer_object GL_EXT_framebuffer_object GL_ARB_draw_instanced GL_ARB_half_float_vertex GL_EXT_draw_buffers2 GL_WIN_swap_hint GL_EXT_texture_sRGB GL_EXT_packed_float GL_EXT_texture_shared_exponent GL_ARB_texture_rg GL_ARB_texture_compression_rgtc GL_NV_conditional_render GL_EXT_texture_swizzle GL_ARB_framebuffer_sRGB GL_EXT_packed_depth_stencil GL_ARB_depth_buffer_float GL_EXT_transform_feedback GL_EXT_framebuffer_blit GL_ARB_vertex_array_object So I guess that means that in JOGL 1.1.1 the GL object sets the depth bit buffer to a legitimate value close to what you ask it for (which seems to be either 16 or 24 on my graphics card) but that in the case of 24 it (the Intel driver) is buggy. |
In reply to this post by gouessej
Sorry for the delay; unfortunately I often tend to move Rather Slowly :)
> except if the driver "says" your chip supports 24 bits whereas it's wrong. gouessej, that's a good point. So far I'd merely assumed that my graphics chip didn't support a 24-bit depth buffer. I'm at "work" right now, but will post back with debug pipeline results later. Will also try to find out what depth values my graphics chip claims to support. Thanks all, Mark |
Right, specific information for my system: Using JOGL 2.0-b222-20101118 on Windows XP Home with an Intel 915GM graphics chip.
The datasheet for the 915GM (http://www.intel.com/Products/Notebook/Chipsets/915GM/915GM-technicaldocuments.htm) says "A 16-bit Z/W or 24 bit Z/W buffer can be selected with a 16-bit color buffer. Z buffer is not supported in 8-bit mode." Which seems consistent with others' suggestions that it's my graphics chip/driver(?) at fault for failing to honour a 24-bit request. JOGLGearsDemo.java (modified so it explicitly asks for the default GLProfile and prints depth buffer info as above) gives the following output for the default 24-bit case: Requesting 24-bit depth buffer. Actual depth buffer: 0 INIT GL IS: javax.media.opengl.DebugGL2 Chosen GLCapabilities: GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false] GL_VENDOR: Intel GL_RENDERER: Intel 915GM GL_VERSION: 1.4.0 - Build 4.14.10.4020 JOGLGearsDemo.dispose: AWT-GLCanvas[ class javax.media.nativewindow.awt.AWTGraphicsConfiguration[class javax.media.nativewindow.awt.AWTGraphicsScreen[class javax.media.nativewindow.awt.AWTGraphicsDevice[type AWT[subType null], connection \Display0, unitID 0, awtDevice Win32GraphicsDevice[screen=0], handle 0x0], idx 0], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], sun.awt.Win32GraphicsConfig@83cc67[dev=Win32GraphicsDevice[screen=0],pixfmt=0], encapsulated WindowsWGLGraphicsConfiguration[class javax.media.nativewindow.DefaultGraphicsScreen[class javax.media.nativewindow.windows.WindowsGraphicsDevice[type Windows, connection decon, unitID 0, handle 0x0], idx 0], pfdID 1, wglChoosen true, requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 8, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: false, Stereo: false, HardwareAccelerated: true, DepthBits: 0, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: true, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false]]], com.jogamp.opengl.impl.windows.wgl.WindowsOnscreenWGLDrawable] ...and in the 16-bit case: Requesting 16-bit depth buffer. Actual depth buffer: 16 INIT GL IS: javax.media.opengl.DebugGL2 Chosen GLCapabilities: GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false] GL_VENDOR: Intel GL_RENDERER: Intel 915GM GL_VERSION: 1.4.0 - Build 4.14.10.4020 JOGLGearsDemo.dispose: AWT-GLCanvas[ class javax.media.nativewindow.awt.AWTGraphicsConfiguration[class javax.media.nativewindow.awt.AWTGraphicsScreen[class javax.media.nativewindow.awt.AWTGraphicsDevice[type AWT[subType null], connection \Display0, unitID 0, awtDevice Win32GraphicsDevice[screen=0], handle 0x0], idx 0], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], sun.awt.Win32GraphicsConfig@83cc67[dev=Win32GraphicsDevice[screen=0],pixfmt=0], encapsulated WindowsWGLGraphicsConfiguration[class javax.media.nativewindow.DefaultGraphicsScreen[class javax.media.nativewindow.windows.WindowsGraphicsDevice[type Windows, connection decon, unitID 0, handle 0x0], idx 0], pfdID 4, wglChoosen true, requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 8, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 16, Green Accum: 16, Blue Accum: 16, Alpha Accum: 16, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: true, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false]]], com.jogamp.opengl.impl.windows.wgl.WindowsOnscreenWGLDrawable] |
Administrator
|
On Tuesday, November 23, 2010 21:57:36 markm [via jogamp] wrote:
> > Right, specific information for my system: Using JOGL 2.0-b222-20101118 on Windows XP Home with an Intel 915GM graphics chip. please try a newer build which includes a 1st fix of #397 http://jogamp.org/bugzilla/show_bug.cgi?id=397 which would be a master build >= b229, or one of the new base_2_0 release builds. Cheers, Sven |
Thanks - using JOGL 2.0-b3-20101124 gives correct rendering using the default GLProfile for my system.
I see the GLCapabilities derived from this profile now defaults to requesting a 16-bit depth buffer (as observed by GLCapabilities.getDepthBits()). For completeness/spam :), output below. Perhaps interestingly, it seems the demo can now use a 24-bit depth buffer if this is requested. See second output below. Thanks for everyone's comments and assistance since I joined the thread - hope it means the original problem has been solved too! Mark [First output:] Requesting default 16-bit depth buffer. Actual depth buffer: 16 INIT GL IS: javax.media.opengl.DebugGL2 Chosen GLCapabilities: GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false] GL_VENDOR: Intel GL_RENDERER: Intel 915GM GL_VERSION: 1.4.0 - Build 4.14.10.4020 JOGLGearsDemo.dispose: AWT-GLCanvas[ class javax.media.nativewindow.awt.AWTGraphicsConfiguration[class javax.media.nativewindow.awt.AWTGraphicsScreen[class javax.media.nativewindow.awt.AWTGraphicsDevice[type AWT[subType null], connection \Display0, unitID 0, awtDevice Win32GraphicsDevice[screen=0], handle 0x0], idx 0], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], sun.awt.Win32GraphicsConfig@83cc67[dev=Win32GraphicsDevice[screen=0],pixfmt=0], encapsulated WindowsWGLGraphicsConfiguration[class javax.media.nativewindow.DefaultGraphicsScreen[class javax.media.nativewindow.windows.WindowsGraphicsDevice[type Windows, connection decon, unitID 0, handle 0x0], idx 0], pfdID 4, wglChoosen true, requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 8, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 16, StencilBits: 0, Red Accum: 16, Green Accum: 16, Blue Accum: 16, Alpha Accum: 16, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: true, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false]]], com.jogamp.opengl.impl.windows.wgl.WindowsOnscreenWGLDrawable] [Second output:] Requesting non-default 24-bit depth buffer. Actual depth buffer: 24 INIT GL IS: javax.media.opengl.DebugGL2 Chosen GLCapabilities: GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false] GL_VENDOR: Intel GL_RENDERER: Intel 915GM GL_VERSION: 1.4.0 - Build 4.14.10.4020 JOGLGearsDemo.dispose: AWT-GLCanvas[ class javax.media.nativewindow.awt.AWTGraphicsConfiguration[class javax.media.nativewindow.awt.AWTGraphicsScreen[class javax.media.nativewindow.awt.AWTGraphicsDevice[type AWT[subType null], connection \Display0, unitID 0, awtDevice Win32GraphicsDevice[screen=0], handle 0x0], idx 0], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], sun.awt.Win32GraphicsConfig@83cc67[dev=Win32GraphicsDevice[screen=0],pixfmt=0], encapsulated WindowsWGLGraphicsConfiguration[class javax.media.nativewindow.DefaultGraphicsScreen[class javax.media.nativewindow.windows.WindowsGraphicsDevice[type Windows, connection decon, unitID 0, handle 0x0], idx 0], pfdID 6, wglChoosen true, requested GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 0, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 0, Red Accum: 0, Green Accum: 0, Blue Accum: 0, Alpha Accum: 0, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: false, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false], chosen GLCapabilities[Capabilities[Onscreen: true, Red: 8, Green: 8, Blue: 8, Alpha: 8, Opaque: true], GL profile: GLProfile[GL2/GL2], PBuffer: false, DoubleBuffered: true, Stereo: false, HardwareAccelerated: true, DepthBits: 24, StencilBits: 8, Red Accum: 16, Green Accum: 16, Blue Accum: 16, Alpha Accum: 16, Multisample: false, Num samples: 0, PBuffer-FloatingPointBuffers: true, PBuffer-RenderToTexture: false, PBuffer-RenderToTextureRectangle: false]]], com.jogamp.opengl.impl.windows.wgl.WindowsOnscreenWGLDrawable] |
Up to now I did not have time to try all your suggestions, but it will really help me in the near future! Thanks to all of you! Martin |
Free forum by Nabble | Edit this page |