经过一些帮助后,我想在下面看到一个圆圈纹理。 我想以这样的方式做到这一点:圆的中心从三角形的共享点开始。
三角形可以改变大小和数量,并且将在不同程度上变化,即45,68,250,因此只能看到三角形中可见纹理的一部分。
它基本上是一对一的映射,将图像向左移动,你只能看到有三角形的部分。
不确定这是什么或google用于什么,任何人都可以提出一些建议或指出相关信息。
我在想我必须动态生成纹理坐标以选择相关部分,但感觉我应该能够进行一对一的映射,这比计算纹理上的三角形要简单。到opengl三角形。
答案 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
本身应该像往常一样传递给向量矩阵乘法。