I am trying to run my application usgin GPUOpenGLRayCastMapper, it just crashed. So I think maybe I can use vtkFixedPointVolumeRayCastMapper. Then another problem.
vtkFixedPointVolumeRayCastMapper has a member of vtkRayCastImageDisplayHelper , and it is trying to create the member in its constructor. However, vtkRayCastImageDisplayHelper is an abstract class, the software will just crash.
This problem seems to be in V9.0, V9.2 and V8.2.
Is this a bug or I am missing something? You help is highly appreciated.
IN the meantime, it looks like for volume rendering, we can only use the GPU based mapper now? What else is possible?
We use both vtkFixedPointVolumeRayCastMapper and vtkGPUVolumeRayCastMapper for volume rendering, since VTK5 (currently maybe a few months behind VTK master). Both classes work robustly, on Windows, Linux, and macOS, on a wide range of volumes.
Probably there is something unusual in your system or data that breaks them. You can try to use some sample data sets, for example CT-Chest and MR-Head from the SlicerTestingData repository to see if there is anything unusual about your data.
If you have trouble rendering these data sets then tell us more about your system (exact CPU model, graphics hardware, operating system version).
Thanks Andras! I think we have to register the object factory for OpenGL2 module under volume rendering. Not sure why this is not registered by default when the class is used.
The class you need to instantiate for single-volume GPU volume rendering is vtkGPUVolumeRayCastMapper it is up to VTK to decide which exact implementation class to instantiate, depending on the current rendering backend.