我正在使用 PyOpenGL 来实现一个小型 2D 游戏引擎。我对实现 Sprite 类的方式犹豫不决。
我已经将所有场景(平铺地图)保存在 VBO 中,并且所有纹理都保存在同一个大纹理中。所有精灵的图像也在这个纹理中。所以我想,为了性能,我应该在 VBO 中包含精灵,比如说从位置 sprite_start_position 开始。
第一个问题是:由于一个精灵可以有多个姿势(图像),是否更好:
- 在精灵的 VBO 中只设置一个条目,并根据姿态修改此条目中的纹理坐标,使用
glBufferSubData
- 在 VBO 中设置与姿态一样多的条目,但仅绘制当前的
glDrawArrays
- 其他 ?
第二个与精灵位置类似。我必须吗 :
- 更改 VBO 中右侧条目的位置
glBufferSubData
glTranslate
之前使用一些glDrawArrays(GL_QUADS, sprite_start_position, 1)
- 其他 ?
我对 OpenGL 比较陌生,我仍然对这个 API 感到有些迷茫......