我不想贴太多的代码,所以我会用直观的语言表达这个问题。希望你能理解我的意思。
我正在制作一个游戏,在代码中有一个模型类来加载模型并设置它的VBO。
在加载函数中,它生成一个新的 VBO ID,并通过绑定等操作将顶点数据从文件加载到缓冲区中(这个过程很顺利)。
在程序开头,我创建了一个模型对象,并加载一个 .obj 文件。
在渲染函数中,我只需调用 DrawArrays() 函数(带有必要的额外内容),如我所说,“一切正常”,因为模型出现在屏幕上没有任何问题。
然而,问题是当我在程序开头创建两个模型对象并加载不同的 .obj 文件到每个对象时。
问题在于当我播放时,只有第二个模型显示在屏幕上。
问题出在我不能正确理解 VBO 的工作原理。
这就是我"认为" VBO 工作的方式。
你可以生成任意数量的 VBO ID。 你可以绑定每个 ID 使其成为活动缓冲区。 你可以将顶点数据加载到该缓冲区中。 现在,您有效地拥有许多不同的 ID,每个 ID 都对应一个“顶点数据集”。 通过调用 DrawArray 函数,它会绘制你生成的所有缓冲区(有效地在屏幕上显示出所有模型)。
现在我知道这是错误的,因为在我的有限理解中,我看不到如何打开/关闭模型。但是,无论我查看多少教程,我都无法回答这个问题,因为它们都只关注于 " 显示第一个 VBO",而这正好是我所能做到的。
所以如果这有意义的话,有人可以 enlighten 我吗?