如何使用OpenGL和GLUT渲染3d.obj文件?(Mac OS X,XCode 4)

How do I render a 3d .obj file with OpenGL and GLUT? (Mac OS X, XCode 4)

本文关键字:OS Mac XCode 文件 OpenGL 何使用 GLUT 渲染 obj 3d      更新时间:2023-10-16

如何渲染.obj文件(在3d中)?我该如何添加颜色?我使用的是操作系统X,使用的是XCode 4。这是我的小"测试实验室"。

#include <GLUT/glut.h>
#include <iostream>
void render(void);
void keyboard(unsigned char c, int x, int y);
void mouse(int button, int state, int x, int y);
int main(int argc, char ** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(500, 500);
glutCreateWindow("Simple GLUT Application");
glutDisplayFunc(render);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutMainLoop();
}
void keyboard(unsigned char c, int x, int y) {
if (c == 27){
exit(0);
}
}
void mouse(int button, int state, int x, int y) {
if (button == GLUT_RIGHT_BUTTON){
exit(0);
}
}
void render(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//RENDER STUFF HERE
glBegin(GL_POLYGON);
glVertex3f(  0.0, -0.8,  0.5);
glVertex3f(  0.0,  0.2,  0.5);
glVertex3f(  0.5,  0.8, -0.5);
glVertex3f(  0.5, -0.2, -0.5);
glEnd();
glutSwapBuffers();
}

OpenGL是一个低级别的三维API。它没有像加载模型文件这样的高级功能。因此,要渲染.obj文件,您需要编写代码来自己加载数据,然后编写OpenGL代码来绘制已加载的多边形。

有几种方法可以将颜色和纹理添加到绘制的OpenGL基元中。当前代码在"立即模式"下使用OpenGL,添加颜色的立即模式方法是在生成顶点之前使用glColor*()函数设置颜色。

glBegin(GL_TRIANGLES);
glColor3f(   1.0,  0.0,  0.0);
glVertex3f(  0.0, -0.8,  0.5);
glColor3f(   0.0,  1.0,  0.0);
glVertex3f(  0.0,  0.2,  0.5);
glColor3f(   0.0,  0.0,  1.0);
glVertex3f(  0.5,  0.8, -0.5);
glEnd();

在过去几年中,OpenGL API发生了一些重大变化。在线的OpenGL教程经常介绍使用OpenGL的旧方法。我强烈建议您选择最新版的OpenGL SuperBible:综合教程和参考。它详细介绍了OpenGL(即非即时模式)的现代使用,包括关于将OpenGL与OSX的原生窗口API Cocoa一起使用的章节。

尽管OpenGL Superbible的第5版(撰写本文时的最新版本)是在OS X支持OpenGL的新功能之前编写的,但新功能已经添加。您需要阅读苹果关于在Cocoa中启用"OpenGL核心配置文件"或OS X的GLUT实现的文档才能使用它们。