使用下面的着色器可以正常显示,但图像上下颠倒。
!!ARBfp1.0
TEX result.color, fragment.texcoord, texture[0], RECT;
END
所以我试着翻转texcoord的Y轴,比如:
!!ARBfp1.0
TEMP uv;
MOV uv, fragment.texcoord;
ADD uv.y, 1.0, -fragment.texcoord.y;
TEX result.color, uv, texture[0], RECT;
END
它不工作。我不熟悉OpenGL ARB汇编语言。
我在这里找到了TEX指令的参考,它说
从指定纹理图像单位上的指定纹理目标中获取要采样的源向量的前三个分量。
我怀疑fragment.texcoord与GLSL中的texcoord是一样的,在GLSL中采样坐标只使用两个分量。
1条答案
按热度按时间tjjdgumg1#
您使用
RECT
作为纹理目标(与2D
相对),因此您的Y纹理坐标 * 不是 * 从[0.0..1.0)开始,而是从[0.0..texture height)开始。因此,您的ADD uv.y, 1.0, -fragment.texcoord.y
计算错误。