OpenGL 清除颜色 alpha 通道不工作
OpenGL clear color alpha channel not working
我正在用 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 值起作用吗?
清除帧缓冲区时,您清除帧缓冲区。您没有进行渲染过程(这是唯一重要的混合时间)。您将帧缓冲区中每个像素的值设置为特定值。就像您将一块内存设置为一个值一样,您就是将该内存设置为该值。
如果您想进行某种全屏着色操作,则必须使用混合或类似性质的东西渲染全屏四边形。
我正在用 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 值起作用吗?
清除帧缓冲区时,您清除帧缓冲区。您没有进行渲染过程(这是唯一重要的混合时间)。您将帧缓冲区中每个像素的值设置为特定值。就像您将一块内存设置为一个值一样,您就是将该内存设置为该值。
如果您想进行某种全屏着色操作,则必须使用混合或类似性质的东西渲染全屏四边形。