我如何从wavefront .obj文件中获得索引顶点位置和索引顶点法线到OpenGL顶点着色器
How do I get indexed vertex positions AND indexed vertex normals from wavefront .obj file into an OpenGL vertex shader?
我试图在顶点数组对象(VAO)中使用两个顶点缓冲对象(VBO)和两个索引缓冲对象(IBO)来渲染包含3D模型的波前。obj文件的数据。.obj文件使用顶点/法线面定义:
f v1//vn1 v2//vn2 v3//vn3
我意识到我不能使用两个ibo来索引OpenGL的VAO,因为只有一个缓冲区对象(一次)可以绑定到GL_ELEMENT_ARRAY_BUFFER绑定目标。这意味着我不能只定义顶点位置索引和顶点法线索引,这是一个问题,当我需要输入到GLSL顶点着色器。
我想使用一个"顶点"结构封装顶点位置和顶点法线,但我不知道如何饲料OpenGL的数据,但一个长数组,当我有我所有的顶点位置数据在不同的对象。我想我可以使用一些循环将数据复制到包含所有位置数据的新数组中。
加载。obj文件时,我想我可以处理数据,以便法线与相应的顶点位置值匹配。
我该如何着手解决这个问题?
我正在使用c++和Visual Studio 2012与OpenGL 3.3。
你必须明白的一件事是,"顶点"不是"位置"的同义词。顶点是属性的集合;位置、法线、纹理坐标等。OpenGL每次处理一个几何元素,其中一个元素由1(点),2(线)或3个顶点(三角形)组成。你不能把位置和正常分开处理,它们必须一起处理。
在你可以在OpenGL中处理它之前,你必须展开。obj文件中的数据。
相关文章:
- D3D11-将混合权重和索引传递到顶点着色器
- Direct3D 11 - HLSL - 获取顶点索引 ID
- 使用 glvertex4i 传递网格面索引时的顶点着色器错误
- 使用此网格函数的立方体的正确顶点和索引是什么
- DirectX11只绘制填充索引和顶点缓冲区中的一半顶点
- tiny_obj_loader到 Direct3D 顶点缓冲区和索引缓冲区数组
- 我可以将单个顶点索引与具有所有属性(位置、法线、texCoord)的顶点缓冲区一起使用吗?
- DirectX:如果绑定索引缓冲区但不绑定顶点缓冲区,会发生什么情况
- Directx 11 - 是将顶点缓冲区中的所有顶点推送到顶点着色器,还是仅编制索引
- 可以在同一 VBO 中存储不同的顶点属性和索引
- 通过查找重复顶点从 vec3 对象的向量计算索引
- 如何从顶点/索引缓冲区创建 CGAL Nef_polyhedron_3
- Directx11如何管理多个顶点/索引缓冲区
- 顶点/索引缓冲区混淆,带有OpenGL 3.3
- CGAL - 在德劳奈三角测量后检索顶点索引
- 如何从Subdiv2D Delaunay三角测量中获取顶点索引
- Boost:: Dijkstra 最短路径,如何从路径迭代器获取顶点索引
- 如何读取顶点/索引缓冲区
- (DirectX 11)动态顶点/索引缓冲区实现恒定的场景内容变化
- 将地图转换为顶点索引不起作用