【问题标题】:texture mapping over many triangles in a circle圆形中许多三角形的纹理映射
【发布时间】:2014-03-15 03:35:12
【问题描述】:

在一些帮助之后,我想在一个圆圈上纹理,如下所示。 我想以这样一种方式做到这一点,即圆的中心从三角形的共享点开始。

三角形的大小和数量会发生变化,并且会在不同的程度上变化,例如 45、68、250,因此只能看到三角形中可见的纹理部分。

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

不知道这叫什么或用谷歌搜索什么,任何人都可以提出一些建议或向我指出相关信息。

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

【问题讨论】:

    标签: opengl shader texture-mapping


    【解决方案1】:

    为此生成纹理坐标并不困难。多边形的每个点对应一定的角度,所以第i个点的角度将是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 本身应该像往常一样传递给向量矩阵乘法。

    【讨论】:

    • 感谢您提供的信息,这就是我想知道是否可以在着色器或其他方式中完成它而不是计算,因为它似乎是一个直接的映射,我将尝试着色器选项,看看我在哪里得到:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 2013-08-14
    • 1970-01-01
    • 2014-10-05
    • 2016-06-12
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多