出于学习目的,我想构建一个非常简单的2D openGL引擎,所以我真的很想知道最着名的引擎如何工作(或者至少是你的想法)。
我知道使用SpriteBatches引擎会为每个SpriteBatch执行一次绘图调用,同时绘制简单的sprite,每个sprite都需要一个绘图调用。 让我们说我只对没有SpriteBatch绘制分离的精灵感兴趣。
以下是我对简单Sprites绘图的想法:
我想它们是通过平面和纹理来表示的。每个平面都有一组顶点和索引以及一个共同的着色器(让我们保持简单)。
精灵存储在一个数组中,为每个精灵引擎需要设置VBO
当前平面的顶点并调用glBindBuffer
,{{1} },设置着色器并调用glBufferData
。
然后清除VBO,并为下一个精灵重复先前的操作。
绘制精灵是否常见?
关于SpriteBatch 我认为最大的区别是VBO存储了每个平面的顶点一次,因此它能够在一个glDrawElements
中绘制所有精灵。调用
我是正确的方式还是我的“假设”是完全错误的?