使用triangle_strip或三角形实现纹理图集。 iPhone opengl es

时间:2009-03-27 01:48:49

标签: iphone opengl-es textures

多个地方建议使用纹理图集来提高性能。 Apple建议使用gltexcoordpointer函数。在我的例子中,我有一排正方形,每一个都有一个随机纹理。我将所有随机纹理放入超级纹理中。现在问题是我似乎无法创建texcoordarray。我找不到任何有关gltexcoordpointer如何将选定的子纹理分配给顶点坐标的信息。理想情况下,顶点将使用triangle_strip绘制,但三角形也可以使用。

2 个答案:

答案 0 :(得分:1)

如果您想要渲染纹理,压缩或其他方式,我必须使用glTexCoordPointer。但是如果你想在它的UV坐标系中移动纹理,你可以随时自由地操纵纹理坐标数组中的各个条目。我使用这样的函数:

- (void) shiftTextureUVY:(float)shift {

  textureVertices[1] += shift;
  textureVertices[3] += shift;
  textureVertices[5] += shift;
  textureVertices[7] += shift;

}
- (void) shiftTextureUVX:(float)shift {

  textureVertices[0] += shift;
  textureVertices[2] += shift;
  textureVertices[4] += shift;
  textureVertices[6] += shift;

}

使用TextureAtlas制作基本的GL_TRIANGLE_STRIP课程。我想你可以用这种方式变得非常时髦,并用类似的方法进行反射和扭曲。

答案 1 :(得分:0)

gltexcoorpointer以1-1为基础指定纹理坐标。所以我不得不画三角形并重复许多顶点。我无法共享顶点的原因是因为共享顶点具有相同的纹理坐标。