我有一个640x320的图像和一个带有顶点(0,0)(0,319),(639,0),(639,319)的矩形(2个三角形)。 我想使用(Opengl 4)使用纹理渲染矩形而不对顶点进行标准化,因为我需要使用相同的单位。
答案 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在着色器中进行纹理映射。