OpenGL---三維變換

來源:互聯網
上載者:User

參看:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html

#include<gl/GLUT.H> #include<Windows.h>static int day = 200;  //一年中已經過去的天數,變化範圍[0, 359)void Display(void){        glEnable(GL_DEPTH_TEST);       //繪製3D圖形式啟用,開啟更新深度緩衝區功能    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清楚螢幕顏色,深度緩衝區    glDepthFunc(GL_LEQUAL);        //測試方式:小於等於    glMatrixMode(GL_PROJECTION);   //投影變換操作,需要一種“近大遠小”的感覺    glLoadIdentity();              //操作前把當前矩陣設為單位矩陣    gluPerspective(75, 1, 1, 400000000);  //視角大小為75度,實際視窗縱橫比為x/y=1,最近可視距離為1,最遠可視距離為400000000    glMatrixMode(GL_MODELVIEW);    //視圖變換操作,從不同位置去觀察    glLoadIdentity();    gluLookAt(0, -200000000, 200000000, 0, 0, 0, 0, 0, 1);  //觀察點位置(0, -200000000,200000000), 目標位置(0,0,0), 眼睛朝向(0, 0, 1)    //繪製紅色的太陽    glColor3f(1.0f, 0.0f, 0.0f);    glutSolidSphere(69600000, 20, 20);   //在原點繪製一個球體,球的半徑為69600000,以z軸上線段為直徑的圓周線條數為20,圍繞在z軸周圍線的條數為20    //繪製藍色的地球    glColor3f(0.0f, 0.0f, 1.0f);    glRotatef(day, 0.0f, 0.0f, -1.0f);   //以day/一年的天數*360度為旋轉的角度(這裡假設一年360天),圍繞z軸順時針方向旋轉,如果將-1該為1,則為逆時針    glTranslatef(150000000, 0.0f, 0.0f); //移動到位置(150000000, 0.0, 0.0)    glutSolidSphere(15945000, 20, 20);    //繪製黃色月球    glColor3f(1.0f, 1.0f, 0.0f);    glRotatef(day/30.0*360.0, 0.0f, 0.0f, -1.0f);  //以day/一個月的天數*360度為旋轉角度    glTranslatef(38000000, 0.0f, 0.0f);    glutSolidSphere(4345000, 20, 20);    glFlush();                     //立即執行}  void myDisplay(){    day++;      if(day >= 360)          day = 0;      Display();      Sleep(100);      glutPostRedisplay(); }int main(int argc, char *argv[])  {      glutInit(&argc,argv);  //對GLUT進行初始化,必須在其它的GLUT使用之前調用一次    glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);  //設定顯示方式,使用RGB顏色,單緩衝    glutInitWindowPosition(400, 400);  //設定視窗在螢幕中的位置    glutInitWindowSize(400, 400);  //設定視窗的大小    glutCreateWindow("opengl");  //建立視窗,視窗標題為“opengl”    glutDisplayFunc(myDisplay);  //設定畫圖的函數    glutMainLoop();  //訊息迴圈    return 0;  }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.