将我转换的.obj文件转换为OpenGL原语
Changing my converted .obj file into OpenGL primitives
我在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
相关文章:
- 了解 GLM- openGL 中的相机转换
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- OpenGL 转换无法使用 GLM 矩阵
- 将旧管道转换为现代 openGL 时出现问题
- 在 OpenGL 中将笛卡尔世界坐标转换为球面局部坐标
- 在 OpenGL 中转换应用顺序让我感到困惑
- 如何在OpenGL中使用关键事件来转换对象
- 在 OpenGL 中计算矩阵时,转换的正确顺序是什么?
- OpenGL 将 ClipCoord 转换为 ScreenCoord
- 将 OpenGL 坐标系统转换为自定义并返回
- 如何将图像转换为灰度 opengl c++
- 如何将鼠标坐标正确转换为 opengl 坐标?
- Opengl 精度转换错误编译错误 E0415
- 使用Emscripten将OpenGL ES转换回主机
- 如何将这些OpenGL着色器转换为Android NDK的GLES3的OpenGL ES着色器
- 如何正确地使用opengl转换的矩阵进行数学运算
- C++ / OpenGL:纹理到像素图示例 - 缩小转换误差
- 使用SFML,现代OpenGL转换从2D点到3D
- 在使用OpenGl中使用转换反馈的GL_SEPARATE_ATTRIB时,如何读取多个缓冲区
- 在不同的坡度上转换openGL中的对象