在Opengl 4中渲染一个没有规范化的纹理

时间:2017-04-04 20:12:02

标签: opengl texture-mapping opengl-3 render-to-texture opengl-4

我有一个640x320的图像和一个带有顶点(0,0)(0,319),(639,0),(639,319)的矩形(2个三角形)。 我想使用(Opengl 4)使用纹理渲染矩形而不对顶点进行标准化,因为我需要使用相同的单位。

1 个答案:

答案 0 :(得分:0)

您可以在窗口空间中处理矩形坐标,将它们转换为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]中转换它们,您可以使用以下公式

Uv = Uvndc * 0.5 + 0.5

使用此yo将x和y或uv置于[0 1]范围内。 现在你可以使用这个uv在着色器中进行纹理映射。