openGL學習(一)

一 配置openGL環境

    參考博客https://blog.csdn.net/qq_19003345/article/details/76098781

二 目標

    實現下列兩張圖片的輸出效果

   

三 代碼

(一)輸出白色矩形:

  1. #include<GL\glut.h>  
  2.   
  3. void init()  
  4. {  
  5.     glClearColor(0.0, 0.0, 0.0, 0.0); //背景設爲黑色  
  6.     glMatrixMode(GL_PROJECTION); //使用正交投影  
  7.     gluOrtho2D(0.0, 200.0, 0.0, 200.0); //座標範圍爲 0<=x<=200 0<=y<=200  
  8. }  
  9.   
  10. void display_square()  
  11. {  
  12.     glClear(GL_COLOR_BUFFER_BIT);  
  13.     glRecti(50, 50, 150, 150); //填充矩形區域  
  14.     glFlush(); //強制清空所有緩存  
  15. }  
  16.   
  17. int main(int argc, char** argv)  
  18. {  
  19.     glutInit(&argc, argv);  
  20.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //單個緩存,RGB三色模型  
  21.     glutInitWindowPosition(100, 50);   
  22.     glutInitWindowSize(400, 400); //設置窗口大小和位置  
  23.     glutCreateWindow("Square");  
  24.   
  25.     init();  
  26.     glutDisplayFunc(display_square);  
  27.     glutMainLoop();  
  28. }  

(二)輸出綠色黑框立方體:

  1. #include<GL/glut.h>  
  2.   
  3. //----------------//  
  4. // 觀察座標系參數 //  
  5. //----------------//  
  6.   
  7. //觀察座標系原點  
  8. GLdouble x0 = 0.0;  
  9. GLdouble y0 = 0.0;  
  10. GLdouble z0 = 5.0;  
  11. //視點  
  12. GLdouble x1 = 0.0;  
  13. GLdouble y1 = 0.0;  
  14. GLdouble z1 = 0.0;  
  15. //向上向量  
  16. GLdouble vx = 0.0;  
  17. GLdouble vy = 1.0;  
  18. GLdouble vz = 0.0;  
  19.   
  20. void init()  
  21. {  
  22.     glClearColor(1.0, 1.0, 1.0, 0.0); //  
  23.     glMatrixMode(GL_MODELVIEW);  
  24.     gluLookAt(x0, y0, z0, x1, y1, z1, vx, vy, vz);  
  25.     glRotatef(45.0, 0.0, 1.0, 1.0);  
  26.     glMatrixMode(GL_PROJECTION);  
  27.     glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 15.0);  
  28. }  
  29.   
  30. void display_cube() //繪製單位立方體和單位立方體線框  
  31. {  
  32.     glClear(GL_COLOR_BUFFER_BIT);  
  33.     glColor3d(0.0, 1.0, 0.0);  
  34.     glutSolidCube(2.0);  
  35.     glColor3d(0.0, 0.0, 0.0);  
  36.     glLineWidth(2.0);  
  37.     glutWireCube(2.0);  
  38.     glFlush();  
  39. }  
  40.   
  41. int main(int argc, char* argv[])  
  42. {  
  43.     glutInit(&argc, argv);  
  44.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);  
  45.     glutInitWindowPosition(100, 100);  
  46.     glutInitWindowSize(400, 400);  
  47.     glutCreateWindow("Cube");  
  48.   
  49.     init();  
  50.     glutDisplayFunc(display_cube);  
  51.     glutMainLoop();  
  52.     return 0;  
  53. }  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章