Jogl stereoscopic support for GeForce GTS 350M + Nvidia 3d vision + LCD shutter glasses

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Jogl stereoscopic support for GeForce GTS 350M + Nvidia 3d vision + LCD shutter glasses

apps4u
I have just bought a Toshiba A660 notebook which comes with a Nvidia GeForce GTS 350M with 3d Vision and LCD shutter glasses. Everything works fine with the NVIDIA test programs, and the NVIDIA Stereoscopic 3d Video Player and 3d Vision Photo Viewer, so the hardware and drivers are ok.

But I have problems with Java, I have tried java3d (no stereo support), Xith no luck either and was hoping that jogl would solve the problem.

The following code:

GLDrawableFactory factory = GLDrawableFactory.getFactory(profile);
                  List availableCapabilities =factory.getAvailableCapabilities(abstractDevice);
                boolean hasStereo = false;
        for (Iterator it=availableCapabilities.iterator();it.hasNext();){
            Object ob = it.next();
            if (ob instanceof GLCapabilities){
            System.out.println(ob);
                if (((GLCapabilities)ob).getStereo()){
                    hasStereo = true;
                    System.out.println("Has stereo!!!!");
                    break;
                }
            }
        }
System.out.println("Has stereo "+hasStereo);

 returns: Has stereo false


------
If I just try to use stereo anyway
after configuring the debug pipeline with GL2 gl = drawable.getGL().getGL2();
                drawable.setGL(new DebugGL2(gl));
using the code:
        gl.glDrawBuffer(side==0?GL2.GL_BACK_LEFT:GL2.GL_BACK_RIGHT);
               

Exception in thread "AWT-EventQueue-0-AWTAnimator-1" javax.media.opengl.GLException: javax.media.opengl.GLException: Thread[AWT-EventQueue-0,6,main] glGetError() returned the following error codes after a call to glDrawBuffer(<int> 0x402): GL_INVALID_OPERATION ( 1282 0x502),
        at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:98)
        at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:197)
        at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:164)
        at javax.media.opengl.awt.GLCanvas.maybeDoSingleThreadedWorkaround(GLCanvas.java:767)
        at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:388)
        at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:74)
        at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:140)
        at com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:180)
        at java.lang.Thread.run(Thread.java:662)
Caused by: javax.media.opengl.GLException: Thread[AWT-EventQueue-0,6,main] glGetError() returned the following error codes after a call to glDrawBuffer(<int> 0x402): GL_INVALID_OPERATION ( 1282 0x502),
        at javax.media.opengl.DebugGL2.checkGLGetError(DebugGL2.java:32455)
        at javax.media.opengl.DebugGL2.glDrawBuffer(DebugGL2.java:8675)
        at SimpleGLEventListener.display(SimpleGLEventListener.java:157)
        at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:191)
        at javax.media.opengl.awt.GLCanvas$DisplayAction.run(GLCanvas.java:873)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:363)
        at javax.media.opengl.awt.GLCanvas$DisplayOnEventDispatchThreadAction.run(GLCanvas.java:890)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
        at java.awt.EventQueue.access$000(EventQueue.java:85)
        at java.awt.EventQueue$1.run(EventQueue.java:603)
        at java.awt.EventQueue$1.run(EventQueue.java:601)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)



Details from java3d:

3d.version = 1.5.1 fcs (build6)
j3d.vendor = Sun Microsystems, Inc.
j3d.specification.version = 1.5
j3d.specification.vendor = Sun Microsystems, Inc.
j3d.pipeline = NATIVE_OGL
j3d.renderer = OpenGL

native.renderer = GeForce GTS 350M/PCI/SSE2
native.vendor = NVIDIA Corporation
native.version = 3.2.0
doubleBufferAvailable = true
stereoAvailable = false
sceneAntialiasingAvailable = true
sceneAntialiasingNumPasses = 1
compressedGeometry.majorVersionNumber = 1
compressedGeometry.minorVersionNumber = 0
compressedGeometry.minorMinorVersionNumber = 2
textureUnitStateMax = 4
textureWidthMax = 8192
textureHeightMax = 8192
shadingLanguageCg = false
shadingLanguageGLSL = true
stencilSize = 0
texture3DAvailable = true
texture3DDepthMax = 2048
texture3DHeightMax = 2048
texture3DWidthMax = 2048
textureAnisotropicFilterDegreeMax = 16.0
textureAutoMipMapGenerationAvailable = true
textureBoundaryWidthMax = 1
textureColorTableSize = 0
textureCombineDot3Available = true
textureCombineSubtractAvailable = true
textureCoordSetsMax = 8
textureCubeMapAvailable = true
textureDetailAvailable = false
textureEnvCombineAvailable = true
textureFilter4Available = false
textureImageUnitsCombinedMax = 32
textureImageUnitsMax = 32
textureImageUnitsVertexMax = 32
textureLodOffsetAvailable = false
textureLodRangeAvailable = true
textureNonPowerOfTwoAvailable = true
textureSharpenAvailable = false
vertexAttrsMax = 10



$0f00000000 Vendor                    : NVIDIA Corporation
$0f00000001 Renderer                  : GeForce GTS 350M/PCI/SSE2
$0f00000002 Version                   : 3.2.0


$ffffffffff ----------------------------------------------------------------
$ffffffffff OpenGL driver extensions
$ffffffffff ----------------------------------------------------------------
$101847c084 GL_ARB_COLOR_BUFFER_FLOAT
$10c8f67363 GL_ARB_COMPATIBILITY
$1029d3dc5b GL_ARB_COPY_BUFFER
$10a45327a9 GL_ARB_DEPTH_BUFFER_FLOAT
$10327b8022 GL_ARB_DEPTH_CLAMP
$1046b4b3c8 GL_ARB_DEPTH_TEXTURE
$10cda4e564 GL_ARB_DRAW_BUFFERS
$10feded1a6 GL_ARB_DRAW_BUFFERS_BLEND
$1098f9fe38 GL_ARB_DRAW_ELEMENTS_BASE_VERTEX
$1047821708 GL_ARB_DRAW_INSTANCED
$1089e97013 GL_ARB_FRAGMENT_COORD_CONVENTIONS
$10c9a6a58b GL_ARB_FRAGMENT_PROGRAM
$104b5f57c7 GL_ARB_FRAGMENT_PROGRAM_SHADOW
$106a8f8cb7 GL_ARB_FRAGMENT_SHADER
$1025e6e791 GL_ARB_FRAMEBUFFER_OBJECT
$10aedac40c GL_ARB_FRAMEBUFFER_SRGB
$1083bf6b3d GL_ARB_GEOMETRY_SHADER4
$10b88505cb GL_ARB_HALF_FLOAT_PIXEL
$100b8e3400 GL_ARB_HALF_FLOAT_VERTEX
$10b25eabf8 GL_ARB_IMAGING
$10a884f44f GL_ARB_MAP_BUFFER_RANGE
$105e876d0d GL_ARB_MULTISAMPLE
$10c57b4e16 GL_ARB_MULTITEXTURE
$101ac89601 GL_ARB_OCCLUSION_QUERY
$107e31cbca GL_ARB_PIXEL_BUFFER_OBJECT
$1050d1ed1a GL_ARB_POINT_PARAMETERS
$10a21945e9 GL_ARB_POINT_SPRITE
$1059a94411 GL_ARB_PROVOKING_VERTEX
$10977ec4db GL_ARB_SAMPLE_SHADING
$1015fc4688 GL_ARB_SEAMLESS_CUBE_MAP
$1056931851 GL_ARB_SHADER_OBJECTS
$1038fcd320 GL_ARB_SHADING_LANGUAGE_100
$10b610bf4a GL_ARB_SHADOW
$102fcdda4b GL_ARB_SYNC
$10baf0b603 GL_ARB_TEXTURE_BORDER_CLAMP
$10ab4d50b4 GL_ARB_TEXTURE_BUFFER_OBJECT
$104dee8f11 GL_ARB_TEXTURE_COMPRESSION
$1057a3afac GL_ARB_TEXTURE_COMPRESSION_RGTC
$10909cee66 GL_ARB_TEXTURE_CUBE_MAP
$109facb38e GL_ARB_TEXTURE_CUBE_MAP_ARRAY
$103b8c071e GL_ARB_TEXTURE_ENV_ADD
$1064a2a5a0 GL_ARB_TEXTURE_ENV_COMBINE
$10c546b7b4 GL_ARB_TEXTURE_ENV_CROSSBAR
$10e6af327d GL_ARB_TEXTURE_ENV_DOT3
$10bd8de372 GL_ARB_TEXTURE_FLOAT
$10010d9db3 GL_ARB_TEXTURE_GATHER
$107cffdcb3 GL_ARB_TEXTURE_MIRRORED_REPEAT
$10099d70c7 GL_ARB_TEXTURE_MULTISAMPLE
$10f36f0d78 GL_ARB_TEXTURE_NON_POWER_OF_TWO
$10ee62a3a4 GL_ARB_TEXTURE_QUERY_LOD
$10f6971860 GL_ARB_TEXTURE_RECTANGLE
$10a524148a GL_ARB_TEXTURE_RG
$102fb421b5 GL_ARB_TRANSPOSE_MATRIX
$1003c64e38 GL_ARB_UNIFORM_BUFFER_OBJECT
$1075ffc146 GL_ARB_VERTEX_ARRAY_BGRA
$105a11bf8c GL_ARB_VERTEX_ARRAY_OBJECT
$100c5d05b2 GL_ARB_VERTEX_BUFFER_OBJECT
$10f5b5dc6c GL_ARB_VERTEX_PROGRAM
$107a12ba93 GL_ARB_VERTEX_SHADER
$10cece1ed5 GL_ARB_WINDOW_POS
$10a0660a7b GL_ATI_DRAW_BUFFERS
$1030e82c68 GL_ATI_TEXTURE_FLOAT
$10f60ac592 GL_ATI_TEXTURE_MIRROR_ONCE
$10cf4bc81a GL_S3_S3TC
$107004e106 GL_EXT_TEXTURE_ENV_ADD
$108b692247 GL_EXT_ABGR
$102c1ce888 GL_EXT_BGRA
$1088c6c80b GL_EXT_BINDABLE_UNIFORM
$1060abd8ee GL_EXT_BLEND_COLOR
$10f391113d GL_EXT_BLEND_EQUATION_SEPARATE
$10a518e18a GL_EXT_BLEND_FUNC_SEPARATE
$108d489b4b GL_EXT_BLEND_MINMAX
$1000fd4a3b GL_EXT_BLEND_SUBTRACT
$10362bdad4 GL_EXT_COMPILED_VERTEX_ARRAY
$1074130064 GL_EXT_CG_SHADER
$10239f9194 GL_EXT_DEPTH_BOUNDS_TEST
$10ec4068bd GL_EXT_DIRECT_STATE_ACCESS
$10b1e469f7 GL_EXT_DRAW_BUFFERS2
$10cbb0482d GL_EXT_DRAW_INSTANCED
$1097396519 GL_EXT_DRAW_RANGE_ELEMENTS
$10a49fd448 GL_EXT_FOG_COORD
$1029b7f2e3 GL_EXT_FRAMEBUFFER_BLIT
$10ebd5d4b1 GL_EXT_FRAMEBUFFER_MULTISAMPLE
$104402458f GL_EXTX_FRAMEBUFFER_MIXED_FORMATS
$10dc944a6a GL_EXT_FRAMEBUFFER_OBJECT
$10bdfdd4bc GL_EXT_FRAMEBUFFER_SRGB
$1090987b8d GL_EXT_GEOMETRY_SHADER4
$108485862b GL_EXT_GPU_PROGRAM_PARAMETERS
$1075b8b1f2 GL_EXT_GPU_SHADER4
$10458c18a3 GL_EXT_MULTI_DRAW_ARRAYS
$10f2debdd1 GL_EXT_PACKED_DEPTH_STENCIL
$1024703c02 GL_EXT_PACKED_FLOAT
$109bf9cf86 GL_EXT_PACKED_PIXELS
$1054a792f3 GL_EXT_PIXEL_BUFFER_OBJECT
$1043f6fdaa GL_EXT_POINT_PARAMETERS
$104a8e54a1 GL_EXT_PROVOKING_VERTEX
$10ec19ceee GL_EXT_RESCALE_NORMAL
$102bdadf4a GL_EXT_SECONDARY_COLOR
$1074312557 GL_EXT_SEPARATE_SHADER_OBJECTS
$1094149761 GL_EXT_SEPARATE_SPECULAR_COLOR
$10b498d003 GL_EXT_SHADOW_FUNCS
$1064765cba GL_EXT_STENCIL_TWO_SIDE
$1010477a56 GL_EXT_STENCIL_WRAP
$10709a8cc3 GL_EXT_TEXTURE3D
$103407850e GL_EXT_TEXTURE_ARRAY
$10b77e1ec8 GL_EXT_TEXTURE_BUFFER_OBJECT
$106f296107 GL_EXT_TEXTURE_COMPRESSION_LATC
$10db623d19 GL_EXT_TEXTURE_COMPRESSION_RGTC
$1030269af0 GL_EXT_TEXTURE_COMPRESSION_S3TC
$1083bbfed6 GL_EXT_TEXTURE_CUBE_MAP
$104cf9cb90 GL_EXT_TEXTURE_EDGE_CLAMP
$104e34fc99 GL_EXT_TEXTURE_ENV_COMBINE
$10f58822cd GL_EXT_TEXTURE_ENV_DOT3
$10e41900d5 GL_EXT_TEXTURE_FILTER_ANISOTROPIC
$101b82974b GL_EXT_TEXTURE_INTEGER
$103cb3e6a3 GL_EXT_TEXTURE_LOD
$10594f35e0 GL_EXT_TEXTURE_LOD_BIAS
$1031e4da53 GL_EXT_TEXTURE_MIRROR_CLAMP
$1021eb8b67 GL_EXT_TEXTURE_OBJECT
$109b18eca8 GL_EXT_TEXTURE_SHARED_EXPONENT
$10329aaaac GL_EXT_TEXTURE_SRGB
$102a101dcf GL_EXT_TEXTURE_SWIZZLE
$106096f79a GL_EXT_TIMER_QUERY
$1008b93f71 GL_EXT_TRANSFORM_FEEDBACK2
$100856cb8e GL_EXT_VERTEX_ARRAY
$10be8d55da GL_EXT_VERTEX_ARRAY_BGRA
$107dceea0b GL_IBM_RASTERPOS_CLIP
$10f6743e5e GL_IBM_TEXTURE_MIRRORED_REPEAT
$101c415acd GL_KTX_BUFFER_REGION
$10feb4fb26 GL_NV_BLEND_SQUARE
$1019ae5a7c GL_NV_CONDITIONAL_RENDER
$1050caf024 GL_NV_COPY_DEPTH_TO_COLOR
$102098073a GL_NV_COPY_IMAGE
$10d625c72c GL_NV_DEPTH_BUFFER_FLOAT
$102ca1bc97 GL_NV_DEPTH_CLAMP
$10f0fd7365 GL_NV_EXPLICIT_MULTISAMPLE
$10e0cc6e8c GL_NV_FENCE
$10b52b3631 GL_NV_FLOAT_BUFFER
$10900ea236 GL_NV_FOG_DISTANCE
$10ff23eacf GL_NV_FRAGMENT_PROGRAM
$1086a3a416 GL_NV_FRAGMENT_PROGRAM_OPTION
$1011f142c6 GL_NV_FRAGMENT_PROGRAM2
$106906df68 GL_NV_FRAMEBUFFER_MULTISAMPLE_COVERAGE
$10b53a2479 GL_NV_GEOMETRY_SHADER4
$102bf384be GL_NV_GPU_PROGRAM4
$10bdb7bca2 GL_NV_GPU_PROGRAM4_1
$10a6a0b5d6 GL_NV_HALF_FLOAT
$102fedef41 GL_NV_LIGHT_MAX_EXPONENT
$109acf3981 GL_NV_MULTISAMPLE_COVERAGE
$1017294839 GL_NV_MULTISAMPLE_FILTER_HINT
$109ccd24ab GL_NV_OCCLUSION_QUERY
$104b0f5f80 GL_NV_PACKED_DEPTH_STENCIL
$103e5a11e8 GL_NV_PARAMETER_BUFFER_OBJECT
$10b43a8e56 GL_NV_PARAMETER_BUFFER_OBJECT2
$108ec95409 GL_NV_PIXEL_DATA_RANGE
$10190cd8d6 GL_NV_POINT_SPRITE
$105e35295c GL_NV_PRIMITIVE_RESTART
$1032df484d GL_NV_REGISTER_COMBINERS
$10128a5c68 GL_NV_REGISTER_COMBINERS2
$10ce21467c GL_NV_SHADER_BUFFER_LOAD
$101298da1f GL_NV_TEXGEN_REFLECTION
$106d4e925a GL_NV_TEXTURE_BARRIER
$10c349e4d4 GL_NV_TEXTURE_COMPRESSION_VTC
$10c3fae675 GL_NV_TEXTURE_ENV_COMBINE4
$105d41d976 GL_NV_TEXTURE_EXPAND_NORMAL
$10871018a6 GL_NV_TEXTURE_RECTANGLE
$102ce79f56 GL_NV_TEXTURE_SHADER
$1098f1ad53 GL_NV_TEXTURE_SHADER2
$10eff69dc5 GL_NV_TEXTURE_SHADER3
$10506c6127 GL_NV_TRANSFORM_FEEDBACK
$10bf8f6707 GL_NV_TRANSFORM_FEEDBACK2
$103fe594bf GL_NV_VERTEX_ARRAY_RANGE
$104134f584 GL_NV_VERTEX_ARRAY_RANGE2
$10423ce7d8 GL_NV_VERTEX_BUFFER_UNIFIED_MEMORY
$1023d5a2bc GL_NV_VERTEX_PROGRAM
$1010d9e873 GL_NV_VERTEX_PROGRAM1_1
$10d8219408 GL_NV_VERTEX_PROGRAM2
$10f914ad45 GL_NV_VERTEX_PROGRAM2_OPTION
$10af26a49e GL_NV_VERTEX_PROGRAM3
$101268ad19 GL_NVX_CONDITIONAL_RENDER
$10ab2249ff GL_NVX_GPU_MEMORY_INFO
$10dba242b7 GL_SGIS_GENERATE_MIPMAP
$10b6e08f6e GL_SGIS_TEXTURE_LOD
$10335939c4 GL_SGIX_DEPTH_TEXTURE
$10140e4e5e GL_SGIX_SHADOW
$108dc08945 GL_SUN_SLICE_ACCUM
$10b72523fb GL_WIN_SWAP_HINT
$10c9acb315 WGL_EXT_SWAP_CONTROL


More debugging from java3d:

Java 3D 1.5.1, Windows version is 6.1 Build: 7600, Windows NT/2000/XP
[Display Driver] nvd3dum.dll, NVIDIA GeForce GTS 350M, Product 8
                 Version 17.11, Build 9791, VendorId 4318
                 DeviceId 4318, SubSysId 3248, Revision -47181447
  [Desktop Mode] 1366x768 120 MHz, D3DFMT_X8R8G8B8
    [Device] Transform & Light Hardware Rasterizer (AA)
    [Device] Reference Rasterizer (AA)


[Java3D]: using hardware Vertex Processing.
[Java3D]: Use NVIDIA GeForce GTS 350M, Transform & Light Hardware Rasterizer (TnL)

[Java3D]: Create device :
Window 1x1 D3DFMT_X8R8G8B8, handle=10010, MultiSampleType D3DMULTISAMPLE_NONE, SwapEffect D3DSWAPEFFECT_COPY, AutoDepthStencilFormat: D3DFMT_D24S8
Max Texture Unit Stage support : 8
Max Simultaneous Texture unit support : 8


Any ideas.

Its such a shame that at last a comodity notebook has 3d stereo support and java isnt able to use it.

Thanks in advance

Andrew Bailey

Reply | Threaded
Open this post in threaded view
|

Re: Jogl stereoscopic support for GeForce GTS 350M + Nvidia 3d vision + LCD shutter glasses

sean
I guess only 3D vision "pro" support opengl?!
Reply | Threaded
Open this post in threaded view
|

Re: Jogl stereoscopic support for GeForce GTS 350M + Nvidia 3d vision + LCD shutter glasses

gouessej
Administrator
Yes, only NVIDIA professional graphics cards (NVIDIA Quadro FX) support quad buffering which is necessary to use stereoscopic glasses with OpenGL as I already said in another thread.
Julien Gouesse | Personal blog | Website