[vtkusers] volume rendering using CPU instead of GPU
Mark Roden
mmroden at gmail.com
Wed Jan 5 19:20:37 EST 2011
OK, I think I found the error.
const char *gl_vendor=reinterpret_cast<const char *>(glGetString(GL_VENDOR));
if(strstr(gl_vendor,"ATI")!=0)
{
this->LoadExtensionsSucceeded=0;
return;
}
Why no ATI cards? Is there some cmake flag I can set for this, or am
I just SOL? My graphics code editing experience is limited at best,
but if there's a set of functions I can look at doing to get ATI
working, lemme know.
If I comment out those lines, the program now fails (badly) in
AllocateFrameBuffers. I'll have to switch to C++ to track down the
error further, so that's next, I guess.
Mark
On Wed, Jan 5, 2011 at 3:04 PM, David Gobbi <david.gobbi at gmail.com> wrote:
> Just one additional note. I just looked at the code for the various
> volume mappers, and only the vtkGPUVolumeRayCastMapper
> supports the Additive mode. This mode is not supported by the
> vtkVolumeRayCastMapper or vtkFixedPointVolumeRayCastMapper.
>
> I think that I'll play around with this a bit myself when I get home
> (since only my home computer supports this GPU stuff). I'm kind
> of curious about how well this Additive mode works.
>
> David
>
>
> On Wed, Jan 5, 2011 at 3:40 PM, Mark Roden <mmroden at gmail.com> wrote:
>> Hi David,
>>
>> Thanks for the pointers. I had been looking at those tests earlier.
>> I'm considering porting at least the additive test to java, just to
>> see if it works. I have a version of the Medical3 test in java, and
>> doing so will let me know if I should expect this to work, and if not,
>> to have a concise piece of code to demonstrate the error in the hopes
>> it can be fixed.
>>
>> Mark
>>
>> On Wed, Jan 5, 2011 at 1:58 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>>> It looks like I might have been wrong about my last statement.
>>> I see this in vtkVolumeMapper.h:
>>>
>>> SetBlendModeToAdditive();
>>>
>>> So it looks like at least some of the VTK volume renderers
>>> can do summation. It looks like there are even some tests:
>>>
>>> VolumeRendering/Testing/Cxx/TestGPURayCastAdditive.cxx
>>> VolumeRendering/Testing/Cxx/TestGPURayCastPerspectiveParallel.cxx
>>>
>>> Interesting stuff.
>>>
>>> David
>>>
>>>
>>> On Wed, Jan 5, 2011 at 2:35 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>>>> About all that I can suggest is that you look directly into the code for
>>>> vtkOpenGLGPUVolumeRayCastMapper::LoadExtensions() and see
>>>> what extension is failing.
>>>>
>>>> In LoadExtensions(), the one place where it can fail without printing
>>>> the extension it failed on is right here:
>>>>
>>>> if(glslMajor<1 || (glslMajor==1 && glslMinor<20))
>>>> {
>>>> this->LoadExtensionsSucceeded=0;
>>>> }
>>>>
>>>> That might provide you with some clues.
>>>>
>>>> Also, don't forget my earlier comment that VTK volume rendering
>>>> does not do averaging or summation, so if averaging is what you
>>>> need, then all of this is moot :)
>>>>
>>>> David
>>>>
>>>>
>>>> On Wed, Jan 5, 2011 at 2:11 PM, Mark Roden <mmroden at gmail.com> wrote:
>>>>> Hi David,
>>>>>
>>>>> I'm actually doing this on Windows this time. Sorry I didn't
>>>>> specify-- although it's good to know to not even try on the mac just
>>>>> yet :)
>>>>>
>>>>> Thanks,
>>>>> Mark
>>>>
>>>
>>
>
More information about the vtkusers
mailing list