如何使用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)
如何渲染.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实现的文档才能使用它们。
相关文章:
- libprotobuf 检查在 Mac OS 上执行程序时失败
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- Mac os x app bundle 在下载并运行时崩溃,但在终端或更改 Info.plist 时运行良好
- const 如何防止写入特定内存 [Clang, Mac OS]
- 如何在 Mac OS 上安装 boost-mpi 及其对 clang 的依赖关系?
- 在 Mac OS 中将 QT 与 CMAKE 集成
- Homebrew OS X OpenCV - 在另一台Mac上运行时寻找dylib
- 从我的2d数组中的一列返回的字符串值被压缩为一个字符串(在Mac os上打开Windows txt文件)
- VK_ERROR_INCOMPATIBLE_DRIVER with Mac OS and Vulkan MoltenVK
- 我无法在C++(Clion,Mac OS)中运行Gurobi
- 如何在Mac OS的发布版本中包含Qt库?
- 如何将C++项目从 32 位迁移到 64 位以支持 MAC OS 10.14(莫哈韦)?
- 在 Mac OS x 中制造期间出现错误未知类型名称"constexpr"
- 无法在 Mac OS X 上链接静态资源库
- 在Mac OS X Mountain Lion(或更高版本)和Linux上使用X11/Xlib.h
- Mac OS c++ Link OpenCV and libtiff
- 使用 c++ 在 Mac OS X 上启动"new email"窗口
- 在 Mac OS 上运行 x11
- 为什么 Mac OS 指定的 TCP 端口不侦听?