【问题标题】:render a no normalized texture in Opengl 4在 Opengl 4 中渲染非标准化纹理
【发布时间】:2017-08-30 05:16:04
【问题描述】:

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

【问题讨论】:

  • 矩形也是640x320,它们的索引是0到639和0到319

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


【解决方案1】:

您可以将窗口空间中的矩形坐标转换为 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

使用这个哟将 x 和 y 或 uv 带到范围 [0 1]。 现在你可以使用这个 uv 在 shader 中做纹理映射了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-16
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多