OpenGL混合仅适用于一帧



我试图通过绘制一个全屏黑色四边形来使我的显示器变暗,但只有 0.5 alpha。 我渲染的第一帧,这工作正常,但是在第一帧之后,我只得到黑屏。

有很多渲染正在进行,但这是所有相关的 openGL 调用(我认为):

初始化 openGL(一次)

glClearColor(0, 0, 0, 1);
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

渲染帧

glClear(GL_COLOR_BUFFER_BIT);
//render things normally (some colored rectangles)
glColor4f(0,0,0,.5);
//draw fullscreen quad
//flip buffers

我真的不确定这里可能出现什么问题。 此外,如果我使用黑色以外的颜色,它会产生一个着色为该颜色的图像,这(我认为)是应该发生的事情。 我已经完成了对数学的理解,我无法弄清楚黑色会如何出现,或者为什么它因帧而异,所以我认为我一定错过了 openGL 的其他方面会导致变化?

好吧

,如果是这样的话,那么让我把它写成一个完整的答案。

如果它只适用于第一帧,则可能是代码变暗的副作用,影响了帧的早期部分。 所以glColor4f可能是罪魁祸首。因此,请考虑您的glColor4f最终影响其他绘图的可能性。

最新更新