我试图通过绘制全屏黑色四边形来使我的显示器变暗,但只有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的其他方面会导致变化?
答案 0 :(得分:1)
那么,如果是这种情况,那么让我把它写成一个完整的答案。
如果它仅适用于第一帧,则可能是代码的副作用变暗影响帧的早期部分。所以glColor4f可能是罪魁祸首。 因此,考虑一下glColor4f最终会影响另一个绘图的可能性。