1

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

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

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

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

最常用的方法是什么?

4

1 回答 1

2

实际上,几何着色器可以为单个输入图元发出多个图元。因此,从单个输入点绘制立方体的所有 6 个面当然是可能的。尽管对于“体素”引擎,点精灵可能会更好地为您服务,因为立方体的方向通常没有用。点精灵从输入点绘制单个屏幕对齐的四边形。除此之外,您还需要更具体地了解您在做什么。

于 2012-07-08T05:31:03.587 回答