在iOS上使用OpenGL ES模仿Polygon Stipple

时间:2011-10-09 10:55:56

标签: iphone ios opengl-es texture-mapping

我想用简单的重复图案填充凹多边形。我已经可以正确地绘制多边形了,不幸的是我在填充它时遇到了问题。在OpenGL中,我可以使用POLYGON_STIPPLE轻松完成。但是,此功能在OpenGL ES中不可用。

我想我可能需要使用纹理而不是点画。但是我无法弄清楚如何计算正确的纹理坐标,因为所有三角形都有完全不同的尺寸,但我仍然希望图案能够很好地适合彼此。

是否有任何好的起点可以解释如何使用重复纹理填充多边形,其中多边形比一个三角形或矩形稍微复杂一些?

1 个答案:

答案 0 :(得分:2)

计算纹理坐标并不像我想象的那么难。用图案填充多边形可以这样做:

  1. 加载纹理(来自图像或定义字节数组)
  2. 绑定纹理
  3. 设置纹理参数,使纹理重复自身。这将产生这样的效果,即对于每个大于1的坐标,纹理将再次重复。

    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
    
  4. 计算纹理坐标。每个顶点坐标c对应于如下计算的纹理坐标:(c.x / texture.width,c.y / texture.height)