【问题标题】:OpenGL clear color alpha channel not workingOpenGL清除颜色Alpha通道不起作用
【发布时间】:2021-10-02 21:26:12
【问题描述】:

我正在使用 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 值起作用吗?

【问题讨论】:

  • 没有办法用 glClear 进行 alpha 混合

标签: c++ opengl opengl-3


【解决方案1】:

当您清除帧缓冲区时,您清除帧缓冲区。您没有进行渲染过程(这是唯一重要的混合时间)。您正在将帧缓冲区中每个像素的值设置为特定值。就像您将一块内存设置为一个值一样,您正在将该内存设置为该值。

如果您想要进行某种全屏着色操作,那么您将不得不使用混合或类似性质渲染一个全屏四边形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    相关资源
    最近更新 更多