OpenGL VBO存储和模板

时间:2012-07-08 04:57:47

标签: opengl vbo

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

我是否将地图信息存储在VBO中?如何获取多维数据集的顶点?我正在考虑它的方式,VBO将需要24个vector3变量(每个位置的每个立方体的向量)。这似乎很多。

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

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

最常用的方法是什么?

1 个答案:

答案 0 :(得分:2)

实际上,几何着色器可以为单个输入图元发出多个图元。因此,从单个输入点绘制立方体的所有6个面当然是可能的。虽然对于"体素"你可能会通过点精灵更好地服务引擎,因为多维数据集的方向通常不是很有用。点精灵从输入点绘制单个屏幕对齐的四边形。除此之外,您需要更加具体地了解您正在做的事情。