如何在OpenGL ARB着色器中翻转纹理坐标的Y轴?

42fyovps  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(168)

使用下面的着色器可以正常显示,但图像上下颠倒。

!!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中采样坐标只使用两个分量。

tjjdgumg

tjjdgumg1#

您使用RECT作为纹理目标(与2D相对),因此您的Y纹理坐标 * 不是 * 从[0.0..1.0)开始,而是从[0.0..texture height)开始。因此,您的ADD uv.y, 1.0, -fragment.texcoord.y计算错误。

相关问题