【问题标题】:glclampcolor missing in QTQT中缺少glclampcolor
【发布时间】: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 之后被删除

我怎样才能做到这一点?

【问题讨论】:

标签: qt opengl


【解决方案1】:

将 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 不可用。

【讨论】:

    【解决方案2】:

    感谢大家的回复。迁移到 5.1 似乎更耗时,所以我最终使用 glGetTexImage 复制整个纹理并读取所需的纹素。与 glReadPixels 实现相比,它要慢一些,但现在可以使用。当我有时间升级时,这些建议肯定会很有用。

    再次感谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      相关资源
      最近更新 更多