纹理映射在一个圆圈中的许多三角形

时间:2014-03-14 19:18:33

标签: opengl shader texture-mapping

经过一些帮助后,我想在下面看到一个圆圈纹理。 我想以这样的方式做到这一点:圆的中心从三角形的共享点开始。

三角形可以改变大小和数量,并且将在不同程度上变化,即45,68,250,因此只能看到三角形中可见纹理的一部分。

它基本上是一对一的映射,将图像向左移动,你只能看到有三角形的部分。

不确定这是什么或google用于什么,任何人都可以提出一些建议或指出相关信息。

我在想我必须动态生成纹理坐标以选择相关部分,但感觉我应该能够进行一对一的映射,这比计算纹理上的三角形要简单。到opengl三角形。

example

1 个答案:

答案 0 :(得分:2)

为此生成纹理坐标并不困难。多边形的每个点对应于特定角度,因此我的点角度将是i*2*pi/N,其中N是正多边形的数量(边数)。然后,您可以使用以下内容来评估每个点纹理坐标:

texX = (cos(i*2*pi/N)+1)/2
texY = (sin(i*2*pi/N)+1)/2

嗯,中心点有(0.5,0.5)。 在着色器中生成坐标可能更简单,如果您有一个专门用于此的坐标: 我假设你得到pos顶点位置。它取决于您如何存储多边形顶点,但让中心为(0,0),其他点范围为(-1; -1)到(1; 1)。然后pos应该简单地用作带偏移的纹理坐标:

vec2 texCoords = (pos + vec2(1,1))*0.5;

然后pos本身应该像往常一样传递给向量矩阵乘法。