纹理映射到三角形网格上

时间:2014-08-12 07:35:56

标签: opengl texture-mapping homography

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

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

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

1 个答案:

答案 0 :(得分:2)

回答你的第一个问题:

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

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