LWJGL - VBO 和 Sprite 类

Posted

技术标签:

【中文标题】LWJGL - VBO 和 Sprite 类【英文标题】:LWJGL - VBO's and Sprite Classes 【发布时间】:2016-08-21 12:54:43 【问题描述】:

我最近发现在渲染时使用 immediate mode 是一个很大的禁忌。

所以我开始查找 VBO 和 VAO,如果我理解正确的话,VBO 是包含位置、颜色等数据的对象/缓冲区。

然后您将 VBO 放入 VAO 并在 VAO 中渲染所有内容?

所有这些对我来说都是非常新鲜和陌生的,所以我想知道我将如何使用它,例如,Sprite/Texture 类会是什么样子,我是否能够修改纹理之类的东西。开始渲染了吗?

我在 Google 上四处搜索,但没有找到任何我能够掌握的东西。

提前谢谢你!

【问题讨论】:

这里不是寻找指南/教程的地方。但是,您应该查看 LWJGL wiki 和 LWJGL 3 demos。 【参考方案1】:

尽管这个问题的表述很奇怪,但我想我得到了你想要的(如果我没有,请纠正我)

您必须将 VAO 视为一个列表。在此列表中,有许多属性,例如位置、纹理坐标等(最多 16 个)。每个属性都存储为一个数组(VBO)。该数组填充了一个属性的所有数据(例如所有顶点位置)。函数glVertexAttribPointer描述了一个VBO的属性,比如一个顶点的大小、数据类型等。

另一方面,有Uniform 变量。这些变量在绘制调用之前加载到着色器中指定的插槽中。这些变量对于整个网格保持不变并用于值,对于所有顶点(投影、视图等)保持相同。这些变量也可以是数据类型Sampler,表示纹理。

有关更多详细信息,我建议您阅读一些示例/教程。

【讨论】:

以上是关于LWJGL - VBO 和 Sprite 类的主要内容,如果未能解决你的问题,请参考以下文章

lwjgl 纹理多重绑定到一个 VBO

LWJGL Indexed VBO,很多混乱

VBO 没有在 LWJGL 中正确创建

在不同系统上使用 VBO 进行 LWJGL 渲染

使用 VBO 使用 LWJGL 对 3D 立方体进行纹理处理

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