【发布时间】:2012-12-18 07:06:28
【问题描述】:
我试图在顶点数组对象 (VAO) 中使用两个顶点缓冲区对象 (VBO) 和两个索引缓冲区对象 (IBO) 来渲染来自包含 3D 模型的波前 .Obj 文件的数据。 .obj 文件使用的是vertex/normal face definition:
f v1//vn1 v2//vn2 v3//vn3
我意识到我不能使用两个 IBO 来使用 OpenGL 的 VAO 进行索引,因为(一次)只能将一个缓冲区对象绑定到 GL_ELEMENT_ARRAY_BUFFER 绑定目标。这意味着我不能只定义顶点位置索引和顶点法线索引,当我需要两者作为 GLSL 顶点着色器的输入时,这是一个问题。
我考虑过使用“顶点”结构来封装顶点位置和顶点法线,但我不知道如何将数据作为一个长数组提供给 OpenGL,并且当我将所有顶点位置数据保存在不同的对象中时。我想我可以使用一些循环将数据复制到包含所有位置数据的新数组中。
加载 .obj 文件时,我想我可以处理数据,以便法线与相应的顶点位置值匹配。
我应该如何解决这个问题?
我正在使用 C++ 和 Visual Studio 2012 以及 OpenGL 3.3。
【问题讨论】: