一 配置openGL環境
參考博客https://blog.csdn.net/qq_19003345/article/details/76098781
二 目標
實現下列兩張圖片的輸出效果
三 代碼
(一)輸出白色矩形:
- #include<GL\glut.h>
- void init()
- {
- glClearColor(0.0, 0.0, 0.0, 0.0); //背景設爲黑色
- glMatrixMode(GL_PROJECTION); //使用正交投影
- gluOrtho2D(0.0, 200.0, 0.0, 200.0); //座標範圍爲 0<=x<=200 0<=y<=200
- }
- void display_square()
- {
- glClear(GL_COLOR_BUFFER_BIT);
- glRecti(50, 50, 150, 150); //填充矩形區域
- glFlush(); //強制清空所有緩存
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //單個緩存,RGB三色模型
- glutInitWindowPosition(100, 50);
- glutInitWindowSize(400, 400); //設置窗口大小和位置
- glutCreateWindow("Square");
- init();
- glutDisplayFunc(display_square);
- glutMainLoop();
- }
(二)輸出綠色黑框立方體:
- #include<GL/glut.h>
- //----------------//
- // 觀察座標系參數 //
- //----------------//
- //觀察座標系原點
- GLdouble x0 = 0.0;
- GLdouble y0 = 0.0;
- GLdouble z0 = 5.0;
- //視點
- GLdouble x1 = 0.0;
- GLdouble y1 = 0.0;
- GLdouble z1 = 0.0;
- //向上向量
- GLdouble vx = 0.0;
- GLdouble vy = 1.0;
- GLdouble vz = 0.0;
- void init()
- {
- glClearColor(1.0, 1.0, 1.0, 0.0); //
- glMatrixMode(GL_MODELVIEW);
- gluLookAt(x0, y0, z0, x1, y1, z1, vx, vy, vz);
- glRotatef(45.0, 0.0, 1.0, 1.0);
- glMatrixMode(GL_PROJECTION);
- glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 15.0);
- }
- void display_cube() //繪製單位立方體和單位立方體線框
- {
- glClear(GL_COLOR_BUFFER_BIT);
- glColor3d(0.0, 1.0, 0.0);
- glutSolidCube(2.0);
- glColor3d(0.0, 0.0, 0.0);
- glLineWidth(2.0);
- glutWireCube(2.0);
- glFlush();
- }
- int main(int argc, char* argv[])
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
- glutInitWindowPosition(100, 100);
- glutInitWindowSize(400, 400);
- glutCreateWindow("Cube");
- init();
- glutDisplayFunc(display_cube);
- glutMainLoop();
- return 0;
- }