一、OpenGL介紹
1.與C語言緊密結合。
OpenGL命令最初就是用C語言函數來進行描述的,對於學習過C語言的人來講,OpenGL是容易理解和學習的。
如果你曾經接觸過TC的graphics.h,你會發現,使用OpenGL作圖甚至比TC更加簡單。
2.強大的可移植性。
微軟的Direct3D雖然也是十分優秀的圖形API,但它只用於Windows系統(現在還要加上一個XBOX游戲機)。
而OpenGL不僅用於 Windows,還可以用於Unix/Linux等其它系統,它甚至在大型計算機、各種專業計算機(如:醫療用顯示設備)上都有應用。
並且,OpenGL 的基本命令都做到了硬件無關,甚至是平台無關。
3.高性能的圖形渲染。
OpenGL是一個工業標准,它的技術緊跟時代,現今各個顯卡廠家無一不對OpenGL提供強力支持,激烈的競爭中使得OpenGL性能一直領先。
二、簡單程序
1.一個簡單的OpenGL程序,代碼如下:
//OpenGL要包含gl.h和glut.h,但glut文件中已經包含這兩個文件了 #include <GL/glut.h> void myDisplay() { //清除,GL_COLOR_BUFFER_BIT表示清除顏色,glClear函數還可以清除其它的東西。 glClear(GL_COLOR_BUFFER_BIT); //畫一個矩形,四個參數分別表示了位於對角線上的兩個點的橫、縱坐標。 glRectf(-0.5f, -0.5f, 0.5f, 0.5f); //保證前面的OpenGL命令立即執行(而不是讓它們在緩沖區中等待),其作用跟fflush(stdout)類似。 glFlush(); } int main(int argc, char *argv[]) { //對glut初始化,這個函數必須在其它glut使用之前調用一次。 //其格式比較死板,一般用glutInit(&argc, argv)就可以了。 glutInit(&argc, argv); //設置顯示方式,其中GLUT_RGB表示使用RGB顏色,與之對應的還有GLUT_INDEX(表示使用索引顏色)。 //GLUT_SINGLE表示使用單緩沖,與之對應的還有GLUT_DOUBLE(使用雙緩沖)。 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100);//設置窗口在屏幕中的位置 glutInitWindowSize(400, 400);//設置窗口的大小 //根據前面設置的信息創建窗口,參數將被作為窗口的標題。 //注意:窗口被創建后,並不立即顯示到屏幕上。需要調用glutMainLoop才能看到窗口。 glutCreateWindow("第一個OpenGL程序"); //設置一個函數,當需要進行畫圖時,這個函數就會被調用。 //這個說法不夠准確,暫時這樣說吧。 glutDisplayFunc(myDisplay); //進行一個消息循環。 //只需要知道這個函數可以顯示窗口,並且等待窗口關閉后才會返回,這就足夠了。 glutMainLoop(); return 0; }
2.運行結果: