【发布时间】:2015-01-29 15:40:01
【问题描述】:
读取我的 obj 文件,并且仅考虑顶点及其索引,我的对象就顶点而言呈现所需的对象;现在我只使用一个基本的颜色数组,所以我可以确定我的加载器工作正常。我意识到 OpenGL 之前没有正确绘制我的对象,因为 uv 索引是用顶点索引读取的——我从一行中读取了所有索引:
f 2/3/4 3/6/1 1/3/6
进入一个向量,然后我将其传递给 GL_ELEMENT_ARRAY_BUFFER。不幸的是,OpenGL(也不是 DirectX)允许多个索引缓冲区。所以,这意味着我不能有一个单独的向量,它只保存 uv 索引,另一个保存顶点索引;或另一个持有正常指数的人。只有一个索引缓冲区,因此只有一个向量保存顶点、纹理和法线的索引;如何指示 OpenGL 绘制 obj 文件中规定的图元而不省略一个索引以支持另一个索引?
注意:我正在使用 glDrawElements(..);过去我用过 glDrawArrays(..) ,但这次我想用前一种方法来提高效率。
【问题讨论】:
-
见stackoverflow.com/q/23349080/3530129。我的回答有一些伪代码来构建顶点和索引缓冲区。