我正在寻找一种从着色器访问OpenGL状态的方式。非常棒的资源GLSL Quick Reference Guide在这方面并没有真正帮助到我。
在我正在处理的示例中,我有以下两个着色器:
顶点着色器:
当我渲染未贴图的多边形时,它们的 alpha 值是正确的,但是它们被分配了黑色颜色。
1、如果禁用了 GL_TEXTURE_2D,我可以设置什么条件检查,使变量 'texel' 被设置为
2、如果我为不同的贴图模式编写不同的着色器,并在它们之间切换,在使用
在我正在处理的示例中,我有以下两个着色器:
顶点着色器:
void main()
{
gl_FrontColor = gl_Color;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}
片段:
uniform sampler2D tex;
uniform float flattening;
void main( void )
{
vec4 texel;
texel = texture2D(tex, gl_TexCoord[0].st);
texel.r *= gl_Color.r;
texel.g *= gl_Color.g;
texel.b *= gl_Color.b;
texel.a *= gl_Color.a;
gl_FragColor = texel;
}
当我渲染未贴图的多边形时,它们的 alpha 值是正确的,但是它们被分配了黑色颜色。
1、如果禁用了 GL_TEXTURE_2D,我可以设置什么条件检查,使变量 'texel' 被设置为
vec4(1.0, 1.0, 1.0, 1.0)
而不是从纹理中采样?2、如果我为不同的贴图模式编写不同的着色器,并在它们之间切换,在使用
glEnable
/glDisable
(GL_TEXTURE_2D
) 时处理速度会更快吗?