我有一个使用ARB Assembly着色器的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);
}这给了我一个红色的纹理。因此,我的基本设置似乎是可以的。
发布于 2017-06-20 19:43:38
注意TEX的第四个参数。它显示为RECT,因此采样器需要具有sampler2DRect类型。
uniform sampler2DRect tex;
void main(void) {
gl_FragColor = texture2DRect(tex, gl_TexCoord[0]);
}https://stackoverflow.com/questions/44634002
复制相似问题