我有一个 640x320 的图像和一个带有顶点 (0,0) (0,319)、(639,0)、(639,319) 的矩形(2 个三角形)。 我想使用(Opengl 4)带有纹理的矩形进行渲染,而不规范化顶点,因为我需要使用相同的单位。
您可以在窗口空间中处理矩形坐标,将它们转换为 ndc 空间
xndc = (xw-x)/(width/2)-1
yndc = (yw-y)/(height/2)-1
x y 宽度和高度应为 0 0 640 320 Xw 和 Yw 将是矩形顶点。 逐个计算 NDC 空间 [-1 1] 范围内的顶点。 现在,您可以将它们直接传递给着色器以绘制无需任何转换,只需设置正确的视口即可。
对于纹理坐标,请与上述相同,这将使它们在 [-1 1] 范围内,但您还需要将它们转换为 [0 1],您可以使用以下公式
紫外线 = 紫外线 *0.5 + 0.5
使用此 yo 将 x 和 y 或 uv 带到范围 [0 1]。 现在,您可以使用此 uv 在着色器中进行纹理映射。