使用显示列表绘制带纹理的矩形是个好主意还是坏主意?
只有当精灵使用的纹理发生变化时,才会重新编译显示列表。
对于绘制单个精灵,这样做没有真正的问题,但也没有任何优势,假设您使用 glRotate/glTranslate 来定位精灵。很多游戏都是这样写的。
在我的游戏中,我使用带有 GL_DYNAMIC_DRAW 的顶点缓冲区对象来存储共享每个纹理图集的所有精灵。我更新 CPU 上的垂直位置,并在一次绘制调用中发送整个批次。我可以使用这种方法绘制更多的精灵。如果我需要绘制更多内容,我可以在顶点着色器中进行定位。
另外,请记住 OpenGL ES2 不支持显示列表,因此如果您正在考虑移植到 ES2 设备,则必须重新进行。(iPhone/iPad 支持 ES1 但您不能与 ES2 混合搭配,您可以使用显示列表或着色器但不能同时使用两者)。