使用基本顶点缓冲区和高度数组的 Java LWJGL VBO

Posted

技术标签:

【中文标题】使用基本顶点缓冲区和高度数组的 Java LWJGL VBO【英文标题】:Java LWJGL VBO using base vertex buffer and height array 【发布时间】:2014-08-02 17:23:27 【问题描述】:

我遇到了一个简单的问题,希望能够解决。我有多个块(64x64),其中包含所有顶点高度的 1d 数组。由于我同时渲染了大约 100 个,我想知道是否可以使用基本顶点浮动缓冲区并将所有高度作为数组动态应用。在动态我的意思是openGL在绘制每个顶点时会改变所有的高度(y)值。还是有比覆盖每个块的所有 Buffer 值更优化的方法来做到这一点? 提前谢谢你!

【问题讨论】:

【参考方案1】:

对于每个块,您可以创建一个 VBO,因为每个块都与其他块不同(通常),渲染 vbo 的值并更深入地查看着色器管道。一个 VBo 通常持有一个网格。您可以更改 VBO 的值,但这非常昂贵。如果您创建一个 VBO 并更改每个块的值,这将非常慢。更好地为每个块创建一个 VBO,进行平截头体剔除,使您只渲染对相机可见的块(并应用一些其他改进)。

关于操纵顶点高度的问题:查看 openGL VertexShader。

我假设您尝试使用体素渲染某些东西,所以您可以看看这个 tut:https://sites.google.com/site/letsmakeavoxelengine/

它还没有完成,但想法很好。

【讨论】:

嗯,我在做普通地形而不是立方体,我有点怀疑 VertexShaders 但我没有经验。使用 GPU 处理,所以我希望有另一个解决方案。无论如何,谢谢你的建议。 使用固定管道矩阵堆栈仍然是旧方法,但由于这是旧方法,我强烈建议使用可编程管道更深入地了解顶点和片段着色器。 VertexShader 并按您要渲染的 Vertex 和屏幕上每个像素的 Fragment Shader 执行。你处理每个顶点,最基本的操作就是将顶点与模型、视图和投影矩阵进行多重播放。 已经看了一些视频,有了基本的想法。谢谢

以上是关于使用基本顶点缓冲区和高度数组的 Java LWJGL VBO的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt 中使用顶点缓冲区对象渲染地形?

c_cpp 使用VAO(顶点数组对象)和顶点缓冲区定义和绘制矩形。

我的OpenGL学习进阶之旅介绍顶点缓冲区对象VBO和元素数组缓冲区对象EBO,并对比使用VBO和不使用VBO绘制三角形的效果

OpenGL顶点数组对象不记录VBO和IBO绑定

OpenGL 顶点数组对象是存储顶点缓冲区名称和索引,还是只存储索引?

在两个不同的顶点数组对象中使用顶点缓冲区