我有一个使用ARB程序集着色器的NVidia示例:
!!ARBfp1.0
TEX result.color, fragment.texcoord, texture[0], RECT;
END
现在我想将其转换为GLSL着色器。这就是我提出的:
uniform sampler2D tex;
void main(void)
{
vec4 col = texture2D ( tex, gl_TexCoord[0] );
gl_FragColor = vec4(col.r, col.g, col.b, col.a);
}
我希望看到渲染渲染没有变化,但遗憾的是我只能得到黑色纹理。
我已经确定tex采样器设置正确。我的GLSL代码也编译没有错误。为了进行调试,我尝试使着色器更简单:
void main(void)
{
gl_FragColor = vec4(1,0,0,1);
}
这给了我一个红色的纹理。因此我的基本设置似乎没问题。
答案 0 :(得分:1)
注意TEX
的第4个参数。它显示RECT
,因此采样器需要sampler2DRect
类型。
uniform sampler2DRect tex;
void main(void) {
gl_FragColor = texture2DRect(tex, gl_TexCoord[0]);
}