gpt4 book ai didi

c++ - glBlendFunc 和 alpha channel

转载 作者:行者123 更新时间:2023-11-30 00:58:40 26 4
gpt4 key购买 nike

我正在尝试使用以下方法渲染一些透明对象:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

但是,我没有得到我想要的结果。

我画了一个完全不透明的正方形,然后我画了一个半透明的正方形。颜色正如我所期望的那样,但是,alpha channel 并不是我想要的全白。

基本上我想要以下等式:

r = old_r*(1.0-a)+r*a;
g = old_g*(1.0-a)+g*a;
b = old_b*(1.0-a)+b*a;
a = old_a + a;

这是否可以使用 glBlendFunc 来实现,还是我必须借助着色器和多个 FBO 进行回读?

最佳答案

您基本上需要颜色和 alpha 的单独混合函数,这是通过使用 glBlendFuncSeparate 实现的:

glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE);

混合功能是否符合您的要求。

关于c++ - glBlendFunc 和 alpha channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com