【发布时间】:2014-08-02 17:23:27
【问题描述】:
我遇到了一个简单的问题,希望能够解决。我有多个块(64x64),其中包含所有顶点高度的 1d 数组。由于我同时渲染了大约 100 个,我想知道是否可以使用基本顶点浮动缓冲区并将所有高度作为数组动态应用。在动态我的意思是openGL在绘制每个顶点时会改变所有的高度(y)值。还是有比覆盖每个块的所有 Buffer 值更优化的方法来做到这一点? 提前谢谢你!
【问题讨论】:
我遇到了一个简单的问题,希望能够解决。我有多个块(64x64),其中包含所有顶点高度的 1d 数组。由于我同时渲染了大约 100 个,我想知道是否可以使用基本顶点浮动缓冲区并将所有高度作为数组动态应用。在动态我的意思是openGL在绘制每个顶点时会改变所有的高度(y)值。还是有比覆盖每个块的所有 Buffer 值更优化的方法来做到这一点? 提前谢谢你!
【问题讨论】:
对于每个块,您可以创建一个 VBO,因为每个块都与其他块不同(通常),渲染 vbo 的值并更深入地查看着色器管道。一个 VBo 通常持有一个网格。您可以更改 VBO 的值,但这非常昂贵。如果您创建一个 VBO 并更改每个块的值,这将非常慢。更好地为每个块创建一个 VBO,进行平截头体剔除,使您只渲染对相机可见的块(并应用一些其他改进)。
关于操纵顶点高度的问题:查看 openGL VertexShader。
我假设您尝试使用体素渲染某些东西,所以您可以看看这个 tut:https://sites.google.com/site/letsmakeavoxelengine/
它还没有完成,但想法很好。
【讨论】: