首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用glblendfuc来混合两个图像?

如何使用glblendfuc来混合两个图像?
EN

Stack Overflow用户
提问于 2020-03-23 09:26:48
回答 1查看 210关注 0票数 1

我想在我的着色器中混合两种纹理,所以我在着色器中的代码如下所示:

代码语言:javascript
运行
复制
out vec4 fragColor1;
out vec4 fragColor2;
void main(){
fragColor1=vec4(1.0,0.0,0.0,1.0);
fragColor2=vec4(0.0,1.0,0.0,1.0);
}

当我用

代码语言:javascript
运行
复制
glEnable(GL_BLEND);
glBlendFunc(GL_ONE,GL_ZERO);

它只在屏幕上显示红色,但当我使用

代码语言:javascript
运行
复制
glEnable(GL_BLEND);
glBlendFunc(GL_ZERO,GL_ONE);

它不能显示绿色,它显示黑色,我不知道有什么问题,以及如何解决它.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-23 14:44:07

您有一个基本的误解,如果您想要混合一个片段着色器的输出,那么您将不得不使用双源共混

当连续呈现多个几何图形时,混合将组合一个片段的连续片段着色器输出。

此外,默认的框架缓冲区只有一个颜色的缓冲区,因此在帧缓冲区中处理多个目标是没有意义的。

如果可以访问片段着色器中两种纹理的颜色,那么根本不需要任何混合,因为您可以在片段着色器中使用mix

代码语言:javascript
运行
复制
out vec4 fragColor;

void main(){
    vec4 color1 = ...;
    vec4 color2 = ...;
    float a = 0.5;

    fragColor = mix(color1, color2, a);
}

注意,a也可以由图像的alpha通道设置(例如,a = color2.a)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60810805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档