Cocos2d和其他2d OpenGL引擎如何绘制精灵?

时间:2013-04-16 17:16:57

标签: opengl-es cocos2d-iphone opengl-es-2.0 theory

出于学习目的,我想构建一个非常简单的2D openGL引擎,所以我真的很想知道最着名的引擎如何工作(或者至少是你的想法)。

我知道使用SpriteBatches引擎会为每个SpriteBatch执行一次绘图调用,同时绘制简单的sprite,每个sprite都需要一个绘图调用。 让我们说我只对没有SpriteBatch绘制分离的精灵感兴趣。

以下是我对简单Sprites绘图的想法: 我想它们是通过平面和纹理来表示的。每个平面都有一组顶点和索引以及一个共同的着色器(让我们保持简单)。 精灵存储在一个数组中,为每个精灵引擎需要设置VBO当前平面的顶点并调用glBindBuffer,{{1} },设置着色器并调用glBufferData。 然后清除VBO,并为下一个精灵重复先前的操作。

绘制精灵是否常见?

关于SpriteBatch 我认为最大的区别是VBO存储了每个平面的顶点一次,因此它能够在一个glDrawElements中绘制所有精灵。调用

我是正确的方式还是我的“假设”是完全错误的?

0 个答案:

没有答案