在 Opengl 4 中渲染无归一化纹理



我有一个 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 在着色器中进行纹理映射。

相关内容

  • 没有找到相关文章

最新更新