[vtkusers] GPURayCast and Texture3D volume mappers fail to render
burlen
burlen.loring at gmail.com
Wed Sep 11 20:03:11 EDT 2013
Hi Miro
> 203 - LoadOpenGLExtension (Failed)
keep it simple. forget about the GPURayCast until this test passes.
> *#define VTK_NO_EXTENSION_LOADING*
that happens if neither glXGetProcAddressARB nor glXGetProcAddress is
found. I think this is your problem. I could verify these are around as
follows:
$ grep glXGetProcAddress /usr/include/GL/ -rIn
$ nm -CD /usr/lib/x86_64-linux-gnu/libGL.so | grep glXGetProcAdd
and verify that VTK found them too:
$grep GLX ./CMakeCache.txt
> after I installed nvidia propriatory driver, I got another libGL.so in
> /usr/lib/nvidia-310/libGL.so so I re-configured vtk
did you rm -rf your build just to make sure that there's no bad values
in your cmake cache? might be worth a try if you hadn't.
Burlen
On 09/11/2013 03:36 PM, Miro Drahos wrote:
> Thanks burlen and Julien.
>
> I did call Render() to initialize the GL context. Created a new plain
> vtkRenderWindow too (in my application I use QVTKWidget):
> cout << " DEBUG standalone renwin" << endl;
> vtkRenderWindow * rw = vtkRenderWindow::New();
> rw->SetSize(512, 512);
> rw->Render();
>
> VTK_CREATE(vtkRenderer, ren);
> ren->AddViewProp(this->m_volume);
> rw->AddRenderer(ren);
>
> vtkOpenGLExtensionManager *extensions=vtkOpenGLExtensionManager::New();
> extensions->SetRenderWindow(rw);
> extensions->Update();
>
> cout << " SUPPORTS 1.3? " <<
> extensions->ExtensionSupported("GL_VERSION_1_3") << endl;
> cout << "====================== exts: ==================== " <<
> extensions->GetExtensionsString() <<
> "================================================== " << endl;
> rw->Render();
> cout << " DEBUG standalone renwin done" << endl;
>
> But the terminal output shows empty string:
> DEBUG standalone renwin
> SUPPORTS 1.3? 0
> ====================== exts: ====================
> ==================================================
> ERROR: In
> /home/miro/BUILDS/VTK5.10.1/VolumeRendering/vtkOpenGLVolumeTextureMapper3D.cxx,
> line 100
> vtkOpenGLVolumeTextureMapper3D (0xba0c9c0): required extensions not
> supported
>
> DEBUG standalone renwin done
>
> Julien's hint got me to dig deeper into why I am getting the empty
> GetExtensionsString().
>
> Looking at the sources, the reason why it returns an empty string is
> because of this #define:
> VTK_NO_EXTENSION_LOADING
> which causes vtkOpenGLExtensionManager::ReadOpenGLExtensions() to set
> the extensions to empty string
> This #define gets into play from #include'd
> vtkOpenGLExtensionManagerConfigure.h which contains only the following:
>
> /* #undef VTK_USE_WGL_GET_PROC_ADDRESS */
> /* #undef VTK_USE_APPLE_LOADER */
> /* #undef VTK_USE_GLX_GET_PROC_ADDRESS */
> /* #undef VTK_USE_GLX_GET_PROC_ADDRESS_ARB */
> /* #undef VTK_USE_VTK_DYNAMIC_LOADER */
> *#define VTK_NO_EXTENSION_LOADING*
>
> /* #undef VTK_DEFINE_GLX_GET_PROC_ADDRESS_PROTOTYPE */
>
> // If using vtkDynamicLoader, we need to know where the libraries are.
> #define OPENGL_LIBRARIES
> "/usr/lib/x86_64-linux-gnu/libGLU.so;/usr/lib/x86_64-linux-gnu/libGL.so;/usr/lib/x86_64-linux-gnu/libSM.so;/usr/lib/x86_64-linux-gnu/libICE.so;/usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so"
>
> This #define must have gotten there when configuring the VTK build. I
> tried to search CMakeLists.txt for VTK_NO_EXTENSION_LOADING and it
> appers in this section (which I admit I have no clue about):
> IF(VTK_USE_X)
> CHECK_FUNCTION_EXISTS(glXGetProcAddressARB
> VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
> IF (VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
> IF (NOT
> "${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_INCLUDES}" STREQUAL
> "${OPENGL_INCLUDE_DIR}")
> # The OpenGL includes changed. Retest glXGetProcAddressARB
> prototype.
> SET(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED 0)
> ENDIF (NOT
> "${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_INCLUDES}" STREQUAL
> "${OPENGL_INCLUDE_DIR}")
> IF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED)
> MESSAGE(STATUS "Looking for glXGetProcAddressARB in GL/glx.h")
> TRY_COMPILE(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS
> ${CMAKE_BINARY_DIR}
> ${CMAKE_CURRENT_SOURCE_DIR}/CheckglXGetProcAddressARB.cxx
> CMAKE_FLAGS
> "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}"
> "-DINCLUDE_DIRECTORIES:STRING=${OPENGL_INCLUDE_DIR}"
> OUTPUT_VARIABLE OUTPUT)
> MESSAGE(STATUS "Looking for glXGetProcAddressARB in GL/glx.h
> - ${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS}")
> FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log
> "Determining if glXGetProcAddressARB exists in GL/glx.h
> ${VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS} with the following
> output:\n"
> "${OUTPUT}\n\n")
> SET(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED 1
> CACHE INTERNAL "Already set
> VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS")
> SET(VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_INCLUDES
> "${OPENGL_INCLUDE_DIR}"
> CACHE INTERNAL "OpenGL includes used to test
> glXGetProcAddressARB prototype.")
> ENDIF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS_TESTED)
> IF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS)
> SET(VTK_DEFINE_GLX_GET_PROC_ADDRESS_PROTOTYPE 1)
> ENDIF (NOT VTK_GLX_GET_PROC_ADDRESS_ARB_PROTOTYPE_EXISTS)
> ELSE (VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
> CHECK_FUNCTION_EXISTS(glXGetProcAddress
> VTK_USE_GLX_GET_PROC_ADDRESS)
> IF (NOT VTK_USE_GLX_GET_PROC_ADDRESS)
> # SET(VTK_USE_VTK_DYNAMIC_LOADER 1)
> MESSAGE(STATUS "Could not find extension loader. Extensions
> disabled.")
> * SET(VTK_NO_EXTENSION_LOADING 1)*
> ENDIF (NOT VTK_USE_GLX_GET_PROC_ADDRESS)
> ENDIF (VTK_USE_GLX_GET_PROC_ADDRESS_ARB)
> ELSE(VTK_USE_X)
> * SET(VTK_NO_EXTENSION_LOADING 1)*
> ENDIF(VTK_USE_X)
>
> When configuring VTK, the cmake option VTK_OPENGL_HAS_OSMESA was OFF,
> if it matters at all.
> Some other openGL options in cmake config:
> OPENGL_INCLUDE_DIR /usr/include
> OPENGL_gl_LIBRARY /usr/lib/x86_64-linux-gnu/libGL.so
> OPENGL_glu_LIBRARY /usr/lib/x86_64-linux-gnu/libGLU.so
> OPENGL_xmesa_INCLUDE_DIR OPENGL_xmesa_INCLUDE_DIR-NOTFOUND
>
> Now after I installed nvidia propriatory driver, I got another
> libGL.so in /usr/lib/nvidia-310/libGL.so so I re-configured vtk with
> OPENGL_gl_LIBRARY /usr/lib/nvidia-310/libGL.so
> instead and recompiled, but it didn't change things. The
> vtkOpenGLExtensionManagerConfigure.h still #defines
> VTK_NO_EXTENSION_LOADING.
>
> The tests (thanks burlen!) show the following:
>
> $ ctest -R LoadOpenGL --verbose | grep GL_
> 203: GL_VENDOR: NVIDIA Corporation
> 203: GL_VERSION: 4.3.0 NVIDIA 310.44
> 203: GL_RENDERER: GeForce GT 520/PCIe/SSE2
> Errors while running CTest
>
> The relevant failed line was this:
> The following tests FAILED:
> 203 - LoadOpenGLExtension (Failed)
>
> Then the Tests binary shows nvidia's libGL.so in use, as expected:
> $ ldd bin/RenderingCxxTests | grep GL
> libGL.so.1 => /usr/lib/nvidia-310/libGL.so.1 (0x00007f75d8888000)
>
> But most interestingly,
> ctest -R GPURay
> all tests in this battery pass, only one segfaults:
>
> 8/17 Test #303: TestGPURayCastDataTypesMinIP
> .....................***Exception: SegFault 0.02 sec
>
> That being said, I see the renderwindow flicker, but I don't see any
> content (e.g. sphere) rendered. I'd like to run the tests in
> interactive mode, but not sure how?
>
> I could build the latest vtk version from git and see whether I can
> replicate the issue there if you think it would make debugging easier.
>
> Some more info on my system:
> Installed OpenGL-related packages:
> $ sudo dpkg-query -l | egrep -i 'mesa|opengl'
> ii compiz-core 1:0.9.9~daily13.06.19~13.04-0ubuntu1
> amd64 OpenGL window and compositing manager
> ii compiz-plugins-default 1:0.9.9~daily13.06.19~13.04-0ubuntu1
> amd64 OpenGL window and compositing manager - default plugins
> ii glew-utils 1.9.0.is.1.8.0-0ubuntu1 amd64
> OpenGL Extension Wrangler - utilities
> ii libegl1-mesa:amd64 9.1.3-0ubuntu0.3
> amd64 free implementation of the EGL API -- runtime
> ii libegl1-mesa-dev 9.1.3-0ubuntu0.3
> amd64 free implementation of the EGL API -- development files
> ii libegl1-mesa-drivers:amd64
> 9.1.3-0ubuntu0.3 amd64 free
> implementation of the EGL API -- hardware drivers
> ii libgl1-mesa-dev 9.1.3-0ubuntu0.3
> amd64 free implementation of the OpenGL API -- GLX development
> files
> ii libgl1-mesa-dri:amd64 9.1.3-0ubuntu0.3
> amd64 free implementation of the OpenGL API -- DRI modules
> ii libgl1-mesa-dri-dbg:amd64
> 9.1.3-0ubuntu0.3 amd64 Debugging symbols for
> the Mesa DRI modules
> ii libgl1-mesa-glx:amd64 9.1.3-0ubuntu0.3
> amd64 free implementation of the OpenGL API -- GLX runtime
> ii libgl2ps0 1.3.6-1 amd64
> Lib providing high quality vector output for OpenGL application
> ii libglapi-mesa:amd64 9.1.3-0ubuntu0.3
> amd64 free implementation of the GL API -- shared library
> ii libgles2-mesa:amd64 9.1.3-0ubuntu0.3
> amd64 free implementation of the OpenGL|ES 2.x API -- runtime
> ii libglew1.8:amd64 1.9.0.is.1.8.0-0ubuntu1
> amd64 OpenGL Extension Wrangler - runtime environment
> ii libglewmx1.8:amd64 1.9.0.is.1.8.0-0ubuntu1
> amd64 OpenGL Extension Wrangler (Multiple Rendering Contexts)
> ii libglu1-mesa:amd64 9.0.0-0ubuntu1
> amd64 Mesa OpenGL utility library (GLU)
> ii libglu1-mesa-dev 9.0.0-0ubuntu1
> amd64 Mesa OpenGL utility library -- development files
> ii libopenvg1-mesa:amd64 9.1.3-0ubuntu0.3
> amd64 free implementation of the OpenVG API -- runtime
> ii libopenvg1-mesa-dev 9.1.3-0ubuntu0.3
> amd64 free implementation of the OpenVG API -- development files
> ii libqt4-opengl:amd64 4:4.8.4+dfsg-0ubuntu9.2
> amd64 Qt 4 OpenGL module
> ii libreoffice-ogltrans 1:4.0.2-0ubuntu1
> amd64 LibreOffice Impress extension for transitions using OpenGL
> ii libtxc-dxtn-s2tc0:amd64 0~git20121227-1
> amd64 Texture compression library for Mesa
> ii mesa-common-dev 9.1.3-0ubuntu0.3 amd64
> Developer documentation for Mesa
> ii mesa-utils 8.0.1+git20110129+d8f7d6b-0ubuntu2 amd64
> Miscellaneous Mesa GL utilities
> ii x11proto-gl-dev 1.4.16-1
> all X11 OpenGL extension wire protocol
>
> Thanks again!
> Miro
>
>
>
>
>
> On 09/11/2013 03:08 PM, burlen wrote:
>> also, did you call "renWin->Render()" once before using the extension
>> manager? or class that uses the extension manager?
>>
>> On 09/11/2013 02:21 PM, burlen wrote:
>>> in your vtk build dir, what does the output of
>>>
>>> $ ctest -R LoadOpenGL --verbose | grep GL_
>>>
>>> say? If it's not reporting the expected versions then you could
>>> verify which driver VTK using with:
>>>
>>> $ ldd bin/vtkRenderingVolumeCxxTests | grep GL
>>>
>>> you may try this also on your app to verify. Do VTK's tests have the
>>> same issue?
>>>
>>> $ ctest -R GPURay --verbose
>>>
>>> if none of this helps, would you be willing to work with the
>>> development version of VTK? it will be easier to find and fix the bug.
>>>
>>> Burlen
>>>
>>> On 09/10/2013 07:21 PM, Miro Drahos wrote:
>>>> Hi all,
>>>> I am having an issue with volume mappers and hope someone can
>>>> provide some constructive feedback.
>>>> When trying to use vtkGPUVolumeRayCastMapper rendering fails with
>>>> the message:
>>>> ERROR: In
>>>> /home/miro/BUILDS/VTK5.10.1/VolumeRendering/vtkOpenGLGPUVolumeRayCastMapper.cxx,
>>>> line 4011
>>>> vtkOpenGLGPUVolumeRayCastMapper (0x12e15ce0): Rendering failed
>>>> because the following OpenGL extensions are required but not
>>>> supported: OpenGL 1.3 is required but not supported
>>>>
>>>> If I run
>>>> glGetString(GL_VERSION)
>>>> I get the correct output string:
>>>> 4.3.0 NVIDIA 310.44
>>>>
>>>> and yet the
>>>> vtkOpenGLExtensionManager::ExtensionSupported("GL_VERSION_1_3")
>>>> somehow returns 0.
>>>>
>>>> I am using vtk 5.10, my graphics card is NVIDIA GT520, using NVIDIA
>>>> propriatory driver 310.44 on Linux Mint 15 (same thing with
>>>> open-source nouveau driver).
>>>> Some terminal output that may be relevant:
>>>>
>>>> $ glewinfo | grep GL_VER
>>>> GL_VERSION_1_1: OK
>>>> GL_VERSION_1_2: OK
>>>> GL_VERSION_1_2_1: OK
>>>> GL_VERSION_1_3: OK
>>>> GL_VERSION_1_4: OK
>>>> GL_VERSION_1_5: OK
>>>> GL_VERSION_2_0: OK
>>>> GL_VERSION_2_1: OK
>>>> GL_VERSION_3_0: OK
>>>> GL_VERSION_3_1: OK
>>>> GL_VERSION_3_2: OK
>>>> GL_VERSION_3_3: OK
>>>> GL_VERSION_4_0: OK
>>>> GL_VERSION_4_1: OK
>>>> GL_VERSION_4_2: OK
>>>>
>>>> $ inxi -Gx
>>>> Graphics: Card: NVIDIA GF119 [GeForce GT 520] bus-ID: 01:00.0
>>>> X.Org: 1.13.3 drivers: nvidia (unloaded:
>>>> fbdev,vesa,nouveau) Resolution: 1920x1080 at 60.0hz, 1920x1080 at 60.0hz
>>>> GLX Renderer: GeForce GT 520/PCIe/SSE2 GLX Version:
>>>> 4.3.0 NVIDIA 310.44 Direct Rendering: Yes
>>>>
>>>>
>>>> More puzzling yet it gets when I try to use
>>>> vtkVolumeMapperTexture3D, I get
>>>> ERROR: In
>>>> /home/miro/BUILDS/VTK5.10.1/VolumeRendering/vtkOpenGLGPUVolumeRayCastMapper.cxx,
>>>> line 4011
>>>> vtkOpenGLGPUVolumeRayCastMapper (0x12e15ce0): Rendering failed
>>>> because the following OpenGL extensions are required but not
>>>> supported:
>>>>
>>>> With no list of problem extensions...
>>>>
>>>> Thank you very much for any input on this!
>>>>
>>>> ------------------------------------------------------------------------
>>>> Miroslav Drahoš
>>>> software engineer
>>>> <http://www.robodoc.com>
>>>> *Curexo Technology Corporation*
>>>> 47320 Mission Falls Ct
>>>> Fremont CA, 94539
>>>> Tel: (510) 249-2300 x2372
>>>> Fax: (510) 249-2396
>>>> www.robodoc.com <http://www.robodoc.com>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Powered bywww.kitware.com
>>>>
>>>> Visit other Kitware open-source projects athttp://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130911/fd43f1ea/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 7158 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130911/fd43f1ea/attachment.jpeg>
More information about the vtkusers
mailing list