【发布时间】:2013-10-17 08:30:36
【问题描述】:
我正在使用 QGLWidget 和 QGLFramebufferObject 在 QT 中渲染到纹理。 我的意图是通过着色器将浮点值写入纹理。
我使用 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 中找到这个调用。它似乎在 QOpenGLFunctions 中的 QT 4.3 之后被删除
我怎样才能做到这一点?
【问题讨论】:
-
QOpenGLFunctions类旨在提供对未定义glClampColor的 OpenGL/ES 2.0 API 的访问。您可以尝试升级到 Qt 5.1,它为每个 OpenGL 版本提供了一个QOpenGLFunctions类(参见 qt-project.org/doc/qt-5.1/qtdoc/classes.html#o)。 -
夹紧怎么样? opengl.org/wiki/Floating_point_and_mipmapping_and_filtering 说 GL_TGB32F 不应该夹颜色?