这些是我的混合功能。
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
我使用混合功能在片段着色器中混合两个纹理。
FragColor =
mix(texture(texture1, TexCoord), texture(texturecubeMap, ransformedR), MixValueVariables.CubeMapValue ) *
vec4(result, material.opacity / 100.0); // multiplying texture with material value
尽管更改了Blend Equation或BlendFunc类型,但我在输出中看不到任何差异。
混合功能是否适用于混合类型。
答案 0 :(得分:2)
mix
函数是否可用于混合类型。
函数mix(x, y, a)
总是计算x * (1−a) + y * a
。
混合从片段着色器获取片段颜色输出,并将它们与帧缓冲区的颜色缓冲区中的颜色合并。
如果您想使用Blending,则必须
如果只想在片段着色器中混合纹理,则必须使用glsl算法。参见GLSL Programming/Vector and Matrix Operations
例如
vec4 MyBlend(vec4 source, vec4 dest, float alpha)
{
return source * alpha + dest * (1.0-alpha);
}
void main()
{
vec4 c1 = texture(texture1, TexCoord);
vec4 c2 = texture(texturecubeMap, ransformedR);
float f = MixValueVariables.CubeMapValue
FragColor = MyBlend(c1, c2, f) * vec4(result, material.opacity / 100.0);
}
根据需要调整功能MyBlend
。