如何渲染.obj文件(在3d中)?我该如何为它添加颜色?我在OS 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();
}
答案 0 :(得分:5)
OpenGL是一种低级3D 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和OS X的本机窗口API Cocoa的章节。
虽然OpenGL Superbible的第5版(撰写本文时的最新版本)是在OS X支持新的OpenGL之前编写的,但后来添加了新功能。您需要阅读Apple的文档,了解如何在Cocoa或OS X的GLUT实现中启用“OpenGL核心配置文件”以使用它们。