Opengl es 片段着色器中的求和颜色

Opengl es 片段着色器中的求和颜色,opengl-es,fragment-shader,Opengl Es,Fragment Shader,如果我使用: void main() { gl_FragColor = texture2D ( sampler, uvVarying ) * colorVarying; } 当colorvaring在简单片段着色器中为(1,0,0,0)时,纹理会像我预期的那样变为红色 但是我想添加更多的红色,而不是与红色相乘。但是如果我把纹理2d和颜色相加,我的碎片就会变成完全白色 你知道为什么吗?如何完成颜色求和?是否启用了混合功能?如果启用,混合模式是什么?您是否在帧的开始处进行颜色清除,如果是,清除

如果我使用:

void main() {
  gl_FragColor = texture2D ( sampler, uvVarying ) * colorVarying;
}
colorvaring
在简单片段着色器中为(1,0,0,0)时,纹理会像我预期的那样变为红色

但是我想添加更多的红色,而不是与红色相乘。但是如果我把纹理2d和颜色相加,我的碎片就会变成完全白色


你知道为什么吗?如何完成颜色求和?

是否启用了混合功能?如果启用,混合模式是什么?您是否在帧的开始处进行颜色清除,如果是,清除的颜色是什么?这里发生的一件事是,乘法将纹理的alpha通道设置为零,而加法使其保持不变,这可能不是您想要的。我不知道是否进行任何清除,但由于它是一个引擎(MOAI),我使用的是,我不确定。将alpha乘以0,我也在想,这会不会使整个纹理透明?是的,前提是启用了alpha混合-这就是为什么我认为您可能从背景中看到了白色透明的颜色。如果删除任何额外的乘法或加法,纹理是否正确显示?