Opengl 三角形网格上的纹理映射

Opengl 三角形网格上的纹理映射,opengl,texture-mapping,homography,Opengl,Texture Mapping,Homography,我想将图像映射到三角形网格上。对于每个三角形,我知道顶点在UV空间以及图像/纹理空间中的位置 OpenGL通过定义UV空间和图像/纹理空间中顶点之间的对应关系来解决此问题 OpenGL只是定义了对应关系之间的线性变换来确定如何插值纹理吗 为什么不需要定义单应性来进行映射?在什么情况下定义单应性是必要的?(这将需要四点对应,而不是三点对应。) 要回答您的第一个问题: OpenGL将使用UV坐标指定纹理,其中(0,0)是左下角,(1,1)是右上角。然后,在光栅化过程中,每个顶点的UV坐标(纹理坐标)

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

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

  • OpenGL只是定义了对应关系之间的线性变换来确定如何插值纹理吗
  • 为什么不需要定义单应性来进行映射?在什么情况下定义单应性是必要的?(这将需要四点对应,而不是三点对应。)

  • 要回答您的第一个问题:

    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映射,还可以传递一些其他参数。有关详细信息,请参阅文档:

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