Detecting 3D texturing hardware support

Detecting 3D texturing hardware support

Post by Rodrigo Herma » Wed, 11 Jun 2003 22:27:51



How can I detect if the graphic board supports 3D texturing by
hardware?
OI4.0 and VolumeViz4.0 have the environment variable IVVR_USE_TEX3D
that enables OpenGL 3D texturing, the value -1 sets to "WhenFast: Use
3D textures only if supported in hardware", but how this detection is
done?
My scene will be completely different depending on the hardware
support, so I need to detect this, instead of using IVVR_USE_TEX3D =
-1

Thanks,
   Rodrigo

 
 
 

Detecting 3D texturing hardware support

Post by Mike He » Fri, 13 Jun 2003 00:19:57



> How can I detect if the graphic board supports 3D texturing by
> hardware?
> OI4.0 and VolumeViz4.0 have the environment variable IVVR_USE_TEX3D
> that enables OpenGL 3D texturing, the value -1 sets to "WhenFast: Use
> 3D textures only if supported in hardware", but how this detection is
> done?
> My scene will be completely different depending on the hardware
> support, so I need to detect this, instead of using IVVR_USE_TEX3D =
> -1

If you only care about 3D textures being rendered correctly (not about
performance) then set IVVR_USE_TEX3D to 1.  In this case VolumeViz will
always use 3D textures when the board/driver advertises *either* the
texture3D extension *or* support for OpenGL 1.2 (or higher).  You can
use SoVolumeRendering::isSupported to query if 3D textures are supported.

But note that (as explained in the IVVR_USE_TEX3D writeup) some boards
do not support 3D textures in *hardware*, only in the driver, and so
have very poor performance.  This is technically legal by the OpenGL
spec, but basically sucks for real applications that might want to
switch to 2D textures to avoid the performance drop.  The only vendor
that has semi-addressed this problem is NVIDIA and on those boards the
IVVR_USE_TEX3D -1 setting means VolumeViz will only use 3D textures
when rendered by the hardware.

-Mike
 TGS Inc, http://www.tgs.com

 
 
 

Detecting 3D texturing hardware support

Post by Rodrigo Herma » Wed, 18 Jun 2003 03:08:02


Ok, but when I use SoVolumeRendering::isSupported(HW_3DTEXMAP) the
answer will be  true just when supported by hardware?
- Rodrigo


> > How can I detect if the graphic board supports 3D texturing by
> > hardware?
> > OI4.0 and VolumeViz4.0 have the environment variable IVVR_USE_TEX3D
> > that enables OpenGL 3D texturing, the value -1 sets to "WhenFast: Use
> > 3D textures only if supported in hardware", but how this detection is
> > done?
> > My scene will be completely different depending on the hardware
> > support, so I need to detect this, instead of using IVVR_USE_TEX3D =
> > -1

> If you only care about 3D textures being rendered correctly (not about
> performance) then set IVVR_USE_TEX3D to 1.  In this case VolumeViz will
> always use 3D textures when the board/driver advertises *either* the
> texture3D extension *or* support for OpenGL 1.2 (or higher).  You can
> use SoVolumeRendering::isSupported to query if 3D textures are supported.

> But note that (as explained in the IVVR_USE_TEX3D writeup) some boards
> do not support 3D textures in *hardware*, only in the driver, and so
> have very poor performance.  This is technically legal by the OpenGL
> spec, but basically sucks for real applications that might want to
> switch to 2D textures to avoid the performance drop.  The only vendor
> that has semi-addressed this problem is NVIDIA and on those boards the
> IVVR_USE_TEX3D -1 setting means VolumeViz will only use 3D textures
> when rendered by the hardware.

> -Mike
>  TGS Inc, http://www.tgs.com

 
 
 

Detecting 3D texturing hardware support

Post by Mike He » Wed, 25 Jun 2003 14:22:25



> Ok, but when I use SoVolumeRendering::isSupported(HW_3DTEXMAP) the
> answer will be  true just when supported by hardware?
> - Rodrigo

Depending on the value specified for IVVR_USE_TEX3D
(see previous posts)

-Mike
 TGS Inc, http://www.tgs.com