【发布时间】:2012-08-22 19:43:23
【问题描述】:
我最近在让顶点缓冲区对象工作方面取得了很大进展。 所以我转向 Element 数组,我想通过这样的实现,我可以从 obj 加载顶点和面数据。
我不太擅长用 C++ 读取文件,所以我写了一个 Python 文档来解析 obj 并编写 2 个单独的 txt 来给我一个顶点数组和面索引,并将它们直接粘贴到我的代码中。这就像 6000 行,但它可以工作(没有编译错误)。 这就是它的样子
.
我认为他们错了。我不知道。顶点和面的顺序并没有改变,只是从 obj 中提取出来,因为我还没有用于缓冲区对象的法线或纹理。如果你看立方体,我会这样做,但不是真的。
void Mesh_handle::DrawTri(){
glBindBuffer(GL_ARRAY_BUFFER,vertexbufferid);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,elementbufferid);
int index1=glGetAttribLocation(bound_program,"inputvertex");
int index2=glGetAttribLocation(bound_program,"inputcolor");
int index3=glGetAttribLocation(bound_program,"inputtexcoord");
glEnableVertexAttribArray(index1);
glVertexAttribPointer(index1,3,GL_FLOAT,GL_FALSE,9*sizeof(float),0);
glEnableVertexAttribArray(index2);
glVertexAttribPointer(index2,4,GL_FLOAT,GL_FALSE,9*sizeof(float),(void*)(3*sizeof(float)));
glEnableVertexAttribArray(index3);
glVertexAttribPointer(index3,2,GL_FLOAT,GL_FALSE,9*sizeof(float),(void*)(7*sizeof(float)));
glDrawArrays(GL_TRIANGLE_STRIP,0,elementcount);
//glDrawElements(GL_TRIANGLE_STRIP,elementcount,GL_UNSIGNED_INT,0);
}
我的 python 解析器只是将信息写入文件:source
物品是英雄联盟的伊泽瑞尔
我不确定我是否看错了这些面孔,或者他们甚至不是我认为的那样。我是否应该使用GL_TRIANGLE_STRIP 或其他东西。任何提示或请求更多信息。
【问题讨论】:
-
现代艺术+1。这个...东西的顶部...实际上看起来像Ezrael的发型,如果你发挥你的想象力xD
-
既然您的问题几乎可以肯定是在您的 .obj 代码中,而不是在您的渲染代码中,为什么不告诉我们您的实际问题在哪里?
标签: c++ opengl render wavefront