2012-07-08 112 views
1

我有一个关于VBO的问题。比方说,我正在试图构建一个即使是16x16x16大块的体素引擎。OpenGL VBO存储和模板

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

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

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

最常用的方法是什么?

回答

2

几何着色器的确可以为单个输入基元发出多个基元。因此从一个输入点绘制立方体的所有6个面是肯定可能的。尽管对于“体素”引擎,你可能会更好地服务于点精灵,因为多维数据集的方向往往没有用处。点精灵从输入点绘制单个屏幕对齐的四元组。除此之外,你需要更具体地了解你在做什么。

+0

我想我不是特别提出体素,而是更多关于绘图管理的标准方法。立方体可能就像怪物,建筑物,敌人等一样容易...... 只是标准的精灵/游戏管理,资源最少的方法 – 2012-07-08 12:26:15