有符号纹理负值被钳位为零

时间:2014-08-04 15:04:08

标签: opengl openscenegraph

我正在尝试使用3D签名纹理进行体积渲染。问题是当在着色器中访问时,其值为负的所有体素都被钳位为零。 这就是我创建图像和设置3D纹理的方法:

char* volumeData = LoadVolume();
osg::ref_ptr<osg::Texture3D> volumeTexture = new osg::Texture3D;
osg::ref_ptr<osg::Image> volumeImage =new Image;    volumeImage->setImage(textureWidth,textureHeight,textureDepth,GL_LUMINANCE16,GL_LUMINANCE ,GL_SHORT,volumeData,Image::AllocationMode::USE_NEW_DELETE); 
volumeTexture->setImage(volumeImage);

我尝试了gDebugger来阅读textels值&#39;在GPU内存中,我确认所有负体素都被钳制为零。

1 个答案:

答案 0 :(得分:0)

您的问题是您使用的是GL_LUMINANCE,它是规范化的。使用非规范化纹理格式。你可以在这里找到它们 http://www.opengl.org/wiki/Image_Format

相关问题