OpenGL VBO存储和模板



我有一个关于VBO的问题。举个例子,我正在尝试构建一个体素风格的引擎,它甚至可以生成16x16x16的块。

我是否将地图信息存储在VBO中?如何获得立方体的垂直度?按照我的想法,VBO需要24个vector3变量(每个位置的每个立方体的向量)。这似乎很多。

有没有办法拥有一个"立方体"VBO模板,然后以某种方式更改我想要绘制的每个立方体的坐标,调用该模板(我希望这有意义)并使用bufferdata为每个位置更新该模板,我是否必须为16x16x16中的每个位置存储这24个矢量,或者我只存储地图坐标,然后通过着色器绘制立方体和多边形?

我希望这是有道理的。在内存方面,加载每个位置存储24个矢量的东西似乎很昂贵,而且对我来说,每帧调用bufferdata 16x16x16次似乎是资源密集型的。。。所以使用顶点着色器的最后一个选项似乎是最可行的,但我是着色器的新手,所以这样做可能吗?

最常用的方法是什么?

几何体着色器实际上可以为单个输入基元发射多个基元。因此,从一个输入点绘制立方体的所有6个面当然是可能的。尽管对于"体素"引擎,点精灵可能会更好地为您提供服务,但立方体的方向通常没有用处。点精灵从输入点绘制单个屏幕对齐的四边形。除此之外,你还需要对自己正在做的事情更加具体。