首先在内部具有不同对象的 VBO 中定位

Posted

技术标签:

【中文标题】首先在内部具有不同对象的 VBO 中定位【英文标题】:Locating first in a VBO with different objects inside 【发布时间】:2013-10-10 21:51:00 【问题描述】:

我有一个 VBO,其中存储了两个不同的对象。 对象 A 由顶点、颜色和纹理坐标组成。 对象 B 由顶点和颜色组成。

现在我在这里要做的是使用键盘按钮在两个模型之间切换。到目前为止,我已经设法隔离了第一个模型,但是我在试图找到一种告诉 glDrawArrays 第二个模型开始和结束位置的好方法时遇到了问题。谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

据我了解,您希望隔离/使用存储在单个 VBO 中的不同模型。

使用:glDrawArrays(mode, first, count);

我猜你计算了firstcount 错误,记住你需要将firstcount 与每个面使用的顶点数量相乘。如果模式为GL_TRIANGLES,则每个面的顶点数为3。

那你想这样称呼它:

glDrawArrays(mode, faces_to_skip * 3, count_faces_to_use * 3);

记住count 是总大小,而不是与first 的大小/偏移量

【讨论】:

以上是关于首先在内部具有不同对象的 VBO 中定位的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之状态模式

在 iOS 上使用具有多个 VBO 和 IBO(多个对象)OpenGLES 2 的 VAO 进行绘制

使用在内部结构定义中保存函数的类成员变量,这些函数将用作 unordered_map 对象的模板参数

如何使用不同的 VAO、VBO 绘制 2 个或更多对象?

两个不同的对象 OpenGL。 VAO VBO IBO 网格变形问题

将两个不同的网格放在同一个顶点 VBO 中的 OpenGL 最佳实践