iOS下使用OpenGL要注意的几点

因为项目中使用到了OpenGL ES做绘图,记录一下一些要注意的点:

  • glGenTextures()方法申请到的纹理对象ID,会由系统控制其对象的释放(也可以使用glDeleteTextures()进行手动释放),所以在使用之前需要使用glIsTexture()来检测该纹理ID是否可用,当为false时,需要重新生成纹理对象ID,如果继续使用该纹理ID,会无法绘制从而导致绘制时为纯白色。
  • iOS下不同的硬件设备,最大的纹理大小是有限制的,如下表(来源于网络):
1024 x 1024 2048 x 2048 4096 x 4096
iPhone 2G iPhone 3gs iPhone 4s
iPhone 3G iPhone 4 iPad 2
iPad iPad 3
  • 我在最新的iPad Air上测试发现最大也支持4096x4096,所以结合上表来看,从iPhone4S和iPad2开始,到最新的iPhone6s以及最新的iPad Air最大也只能支持4096x4096的大小。所以在使用时要注意,否则会导致无法渲染而变成纯白色。
  • 在使用OpenGL时纹理图片的宽高都需要是2的N次方,在一些平台下(PC平台)下没有这样的限制。并且纹理图片不需要非得是正方形的。所以在使用一些不符合大小时,需要手动对图片进行拉伸,然后复制到显存中进行关联,在进行绘制时按对应的坐标进行转换,所以并不用担心图片在渲染时会被拉伸的问题。

我使用的是OpenGL ES 1.x的版本,第一条我在网上没找到太多的资料,都是通过测试发现的,如果有什么不对,还请指正,谢谢。