将我转换的.obj文件转换为OpenGL原语

Changing my converted .obj file into OpenGL primitives

本文关键字:转换 OpenGL 文件 原语 obj      更新时间:2023-10-16

我在Blender中创建了一个房子,并将其导出为。obj文件。然后我使用3DWin将其转换为scene.cpp。我很困惑,我怎么能把这些数据导入到我的代码来渲染房子。

我现在有一个网格数组,我的坐标看起来像下面的

static float mesh01_coords[] = {
50, 0.1, 50,
-50, 0.1, 50,
-50, 0.1, -50,
50, 0.1, -50,
...

我只是循环通过每个数组索引设置一个顶点在每个点?如:

glVertex3f(50, 0.1, 50);
glVertex3f(-50, 0.1, 50);
glVertex3f(-50, 0.1, -50);
glVertex3f(50, 0.1, -50);

然后我使用3DWin将其转换为场景。

这样做没有意义。它只会使你的可执行文件膨胀,如果你对模型做了任何改变,你将不得不重新编译你的程序。

直接读取OBJ文件。为它编写解析器相当容易http://www.royriggs.com/obj.html

我很困惑,我怎么能把这些数据导入到我的代码来渲染房子。

你的模型由一个索引的顶点列表和一个面列表组成,其中每个面是顶点列表的索引元组。你可以偷懒,将顶点列表加载到顶点数组中,然后将索引列表提供给glDrawElements,它将根据人脸列表绘制顶点。

首先- OBJ规范。现在,您可以自己实现它,也可以使用将为您提供此功能的库。

DirectX SDK中有一个名为MeshFromOBJ的样本;它是基于c++的,据我所知,它提供了很好的学习经验。基本上你所需要做的就是将Direct3D调用(没有那么多)转换为OpenGL调用。在gamedev.net上也有一个帖子可能会有所帮助。

或者,找一个库来帮你做。试试谷歌吧。我找到的一个结果是GLM