OpenGL透明色alpha通道不工作



我正在用OpenGL和c++制作一款游戏,我想在所有内容中添加一点红色。我决定在渲染所有内容后清除屏幕红色,但将alpha通道设置为低数值,这就是我所尝试的:

// inside main function (called once)
glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// render loop (called every frame)
// drawing code here ...
glClearColor(8.0f, 0.0f, 0.0f, 0.3f);
glClear(GL_COLOR_BUFFER_BIT);

我希望在所有东西上都放上红色,但这只是把整个屏幕变成红色。有什么方法可以使glClearColor()中的alpha值工作吗?

当您清除framebuffer时,您将清除framebuffer。你没有做一个渲染过程(这是唯一的时候,混合的问题)。您将帧缓冲区中每个像素的值设置为特定值。就像你把一块内存设置为一个值一样,你也在把这块内存设置为那个值。

如果你想做一些全屏色彩操作,那么你将不得不渲染一个全屏四边形,混合或类似的东西。

最新更新