【发布时间】:2012-03-28 18:58:08
【问题描述】:
在将具有部分不透明度的简单形状渲染到 Qt 中的 QGLFrameBufferObjects 时,我遇到了问题。
我已将问题简化为:
当我将一个简单的四边形渲染到颜色设置为 (1,0,0,.5) 的 QGLFrameBufferObject,然后将其 blit 到屏幕上时,我得到的结果对于 50% 的不透明度来说太亮了红色.如果我用相同的颜色(实际上是相同的代码)直接在屏幕上绘制相同的四边形,我会得到正确的颜色值。如果我用不透明度 == 1.0 渲染四边形,那么结果是相同的……在这两种情况下我都会得到一个完整的深红色。通过使用 buffer.toImage().save("/tmp/blah.tif") 直接将缓冲区转储到磁盘,我已经确认缓冲区中的颜色确实错误。
在这两种情况下,我在执行操作之前都将输出缓冲区清除为 (1,1,1,1)。
为什么我绘制的部分透明的东西在绘制到屏幕外缓冲区时比直接在屏幕上绘制时更亮?我必须在 FBO 或其他东西上设置一些状态,但我不知道它是什么。
【问题讨论】: