我正在使用QGLWidget和QGLFramebufferObject在QT中使用Render to Texture。 我的目的是通过着色器将浮点值写入纹理。
我使用GL_RGB32F纹理,RTT似乎正在发生。但是,存储在纹理中的值似乎被夹在0和1之间。
gl_FragData [0]的测试值= vec4(120.0,2.0,0.8,1.0);在着色器中 在纹理中得到1.0,1.0,0.8。
我看到帖子提示调用glClampColor
glClampColorARB(GL_CLAMP_FRAGMENT_COLOR,GL_FALSE); glClampColorARB(GL_CLAMP_READ_COLOR,GL_FALSE);
将摆脱这种限制,但遗憾的是我无法在QT 5.0.2中找到此调用。 QT 4.3在QOpenGLFunctions
之后似乎被删除了我怎样才能做到这一点?
答案 0 :(得分:0)
将QT与OpenGL桌面版本一起使用 Qt 5.1.1 for Windows 32-bit (VS 2010, OpenGL, 504 MB)
有关OpenGL和QT的更多信息: http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL
正如您在默认情况下看到的那样,使用了OpenGL ES 2.0版本(通过Angle项目),并且glClampColor不可用。
答案 1 :(得分:0)
感谢大家的回复。迁移到5.1似乎更耗时,所以我最终使用glGetTexImage复制整个纹理并读取所需的纹理元素。与glReadPixels实现相比,它更慢,但现在起作用。当我有时间升级时,这些建议肯定会有很大用处。
再次感谢!