opengl混合仅适用于一帧

时间:2014-01-05 21:47:25

标签: opengl alphablending blending

我试图通过绘制全屏黑色四边形来使我的显示器变暗,但只有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的其他方面会导致变化?

1 个答案:

答案 0 :(得分:1)

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

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