学了很多次OpenGL了,每次都无疾而终,这次真得用了~~~
1 #include <GLUT/GLUT.h> 2 3 #include <iostream> 4 5 void render(void); 6 void keyboard(unsigned char c, int x, int y); 7 void mouse(int button, int state, int x, int y); 8 9 int main(int argc, char **argv) 10 { 11 //初始化glut 12 glutInit(&argc, argv); 13 //初始化显示模式为双缓存、RGBA 14 glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); 15 //设置窗口位置 16 glutInitWindowPosition(100, 100); 17 //设置窗口大小 18 glutInitWindowSize(640, 480); 19 //创建窗口 20 glutCreateWindow("Simple GLUT Application"); 21 //指定显示回调函数 22 glutDisplayFunc(render); 23 //指定键盘回调函数 24 glutKeyboardFunc(keyboard); 25 //指定鼠标回调函数 26 glutMouseFunc(mouse); 27 //启动主循环 28 glutMainLoop(); 29 } 30 31 //渲染回调函数 32 void render(void) 33 { 34 //清理颜色和深度缓存 35 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 36 37 //开始绘制图形 38 glBegin(GL_TRIANGLES); 39 //指定笔触颜色 40 glColor3f(1, 0, 0); 41 42 //绘制点 43 // glVertex234fid 44 glVertex2f(-0.5, -0.5); 45 46 glColor3f(0, 1, 0); 47 glVertex2f(0.5, -0.5); 48 49 glColor3f(0, 0, 1); 50 glVertex2f(0, 0.5); 51 glEnd(); 52 53 //交换缓存 54 glutSwapBuffers(); 55 } 56 57 //键盘事件回调函数 58 void keyboard(unsigned char c, int x, int y) 59 { 60 //ESC键 61 if (c == 27) 62 { 63 //退出程序 64 exit(0); 65 } 66 } 67 68 //鼠标事件回调函数 69 void mouse(int button, int state, int x, int y) 70 { 71 //鼠标右键 72 if (button == GLUT_RIGHT_BUTTON) 73 { 74 exit(0); 75 } 76 }
在Mac下用用GLUT框架和OpenGL框架还是挺简单的,不需要去考虑平台和语言的区别。直接编译运行:
1 :clang++ BasicGlut.cpp -o BasicGlut -framework OpenGL -framework GLUT 2 :./BasicGlut