【问题标题】:texture mapping onto triangle mesh纹理映射到三角形网格
【发布时间】:2014-10-05 04:31:48
【问题描述】:

我想将图像映射到三角形网格上。对于每个三角形,我知道顶点在 UV 空间以及图像/纹理空间中的位置。

OpenGL 通过定义 UV 空间和图像/纹理空间中的顶点之间的对应关系来解决这个问题。

  1. OpenGL 是否只是定义了对应关系之间的线性变换以确定如何插入纹理?
  2. 为什么不需要定义单应性来进行映射?在什么情况下需要定义单应性? (这需要四个点对应而不是三个。)

【问题讨论】:

    标签: opengl texture-mapping homography


    【解决方案1】:

    回答你的第一个问题:

    OpenGL 将为您的纹理分配 UV 坐标,其中 (0,0) 是左下角,(1,1) 是右上角。然后,在光栅化过程中,每个顶点的 UV 坐标(纹理坐标)将(线性)插值在其对应的三角形上。然后三角形的每个片段将获得一个插值纹理坐标,该坐标可用于从纹理中获取相应的值。如何在纹理上进行插值取决于创建纹理时发送的参数:

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    

    分别用于放大和缩小。 GL_LINEAR 参数将导致纹素之间的线性插值,例如,GL_NEAREST 为您提供最近邻。如果您使用 mip-mapping,您也可以传递一些其他参数。更多信息请参见文档:

    https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml

    关于你的第二个问题,我不太确定,但我相信我的回答至少应该部分涵盖它。

    【讨论】:

      猜你喜欢
      • 2014-07-08
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      相关资源
      最近更新 更多