OpenGL基本API概述
OpenGL中的gl庫是核心庫,glu是實用庫,glut是實用工具庫。 gl是核心,glu是對gl的部分封裝,glut是OpenGL的跨平臺工具庫。 gl中包含了最基本的3D函數,而glu似乎對gl的輔助,如果數學功底好,在不用glu的情況下,也是可以做出同樣的效果。glut是基本的窗口界面, 是獨立于gl和glu的,如果不喜歡用glut可以用MFC和Win32窗口等代替;但是glut是跨平臺的,這就保證了我們編出的程序是跨平臺的;如果用MFC或者Win32只能在windows操作系統上使用。選擇OpenGL的一個很大原因就是因為它的跨平臺性,所以我們可以盡量的使用glut庫。
O</strong></span>penGL實用庫:43個函數(以glu開頭,包括紋理映射、坐標變換、多邊形分化、繪制一些如橢球、圓柱、茶壺等簡單多邊形實體)。
OopenGL輔助庫:31個函數(以aux 開頭 openGL函數庫相關的API有核心庫(gl)、實用庫(glu)、輔助庫(aux)、實用工具庫(glut)、窗口庫(glx、agl、wgl)和擴展函數庫等)。 ①OpenGL核心庫
核心庫包含有115個函數,函數名的前綴為gl。這部分函數用于常規的、核心的圖形處理.此函數由gl.dll來負責解釋執行.核心庫中的函數主要可以分為以下幾類函數。
繪制基本幾何圖元的函數
如繪制圖元的函數glBegain()、glEnd()、glNormal*()、glVertex*()。
矩陣操作、幾何變換和投影變換的函數
如矩陣入棧函數glPushMatrix()、矩陣出棧函數glPopMatrix()、裝載矩陣函數glLoadMatrix()、矩陣相乘函數glMultMatrix(),當前矩陣函數glMatrixMode()和矩陣標準化函數glLoadIdentity(),幾何變換函數glTranslate*()、glRotate*()和glScale*(),投影變換函數 glOrtho()、glFrustum()和視口變換函數glViewport()等等。
顏色、光照和材質的函數
如設置顏色模式函數glColor*()、glIndex*(),設置光照效果的函數glLight*() 、glLightModel*()和設置材質效果函數glMaterial()等等。
顯示列表函數
主要有創建、結束、生成、刪除和調用顯示列表函數glNewList()、glEndList()、glGenLists()、glCallList()和glDeleteLists()。
紋理映射函數
主要有一維紋理函數glTexImage1D()、二維紋理函數glTexImage2D()以及設置紋理參數、紋理環境和紋理坐標的函數glTexParameter*()、glTexEnv*()和glTetCoord*()等。
特殊效果函數
融合函數glBlendFunc()、反走樣函數glHint()和霧化效果glFog*()。
光柵化、象素操作函數
如象素位置glRasterPos*()、線型寬度glLineWidth()、多邊形繪制模式glPolygonMode()、讀取象素glReadPixel()、復制象素 glCopyPixel()等。
選擇與反饋函數
主要有渲染模式glRenderMode()、選擇緩沖區glSelectBuffer()和反饋緩沖區glFeedbackBuffer()等。
曲線與曲面的繪制函數
生成曲線或曲面的函數glMap*()、glMapGrid*(),求值器的函數glEvalCoord*()、glEvalMesh*()。
狀態設置與查詢函數
主要有glGet*()、glEnable()、glGetError()等。
②OpenGL實用庫The OpenGL Utility Library (GLU)
包含有43個函數,函數名的前綴為glu.OpenGL提供了強大的但是為數不多的繪圖命令,所有較復雜的繪圖都必須從點、線、面開.Glu 為了減輕繁重的編程工作,封裝了OpenGL函數,Glu函數通過調用核心庫的函數,為開發者提供相對簡單的用法,實現一些較為復雜的操作.此函數由glu.dll來負責解釋執行OpenGL中的核心庫和實用庫可以在所有的OpenGL平臺上運行.主要包括了以下幾種.
輔助紋理貼圖函數
有gluScaleImage() 、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()。
坐標轉換和投影變換函數
定義投影方式函數gluPerspective()、gluOrtho2D()、gluLookAt(),拾取投影視景體函數gluPickMatrix(),投影矩陣計算gluProject()和 gluUnProject()等等。
多邊形鑲嵌工具
有gluNewTess()、 gluDeleteTess()、 gluTessCallback()、 gluBeginPolygon()、 uTessVertex()、gluNextContour()、 gluEndPolygon()等等。
二次曲面繪制工具
主要有繪制球面、錐面、柱面、圓環面 gluNewQuadric()、 gluSphere()、 gluCylinder()、 gluDisk()、gluPartialDisk()、 gluDeleteQuadric()等等。
非均勻有理B樣條繪制工具
主要用來定義和繪制Nurbs曲線和曲面,包括gluNewNurbsRenderer()、gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、gluNurbsProperty()等函數。
錯誤反饋工具
獲取出錯信息的字符串gluErrorString()。
③OpenGL輔助庫 包含有31個函數,函數名前綴為aux
這部分函數提供窗口管理、輸入輸出處理以及繪制一些簡單三維物體。此函數由glaux.dll負責解釋執行。創建aux庫是為了學習和編寫OpenGL程序,它更像是一個用于測試創意的預備基礎接管。Aux庫在windows實現有很多錯誤,因此很容易導致頻繁的崩潰。在跨平臺的編程實例和演示中,aux很大程度上已經被glut庫取代。OpenGL中的輔助庫不能在所有的OpenGL平臺上運行。
輔助庫函數主要包括以下幾類:
窗口初始化和退出函數auxInitDisplayMode()和auxInitPosition()。
窗口處理和時間輸入函數auxReshapeFunc()、auxKeyFunc()和auxMouseFunc()。
顏色索引裝入函數auxSetOneColor()。
三維物體繪制函數
包括兩種形式網狀體和實心體,如繪制立方體auxWireCube()和auxSolidCube()。這里以網狀體為例,長方體auxWireBox()、環形圓紋面 auxWireTorus()、 圓柱auxWireCylinder()、二十面體auxWireIcosahedron()、八面體auxWireOctahedron()、四面體 auxWireTetrahedron()、十二面體auxWireDodecahedron()、圓錐體auxWireCone()和茶壺auxWireTeapot()。
背景過程管理函數auxIdleFunc()。
程序運行函數auxMainLoop()。
④OpenGL工具庫 OpenGL Utility Toolkit
包含大約30多個函數,函數名前綴為glut.。glut是不依賴于窗口平臺的OpenGL工具包,由Mark KLilgrad在SGI編寫(現在在Nvidia),目的是隱藏不同窗口平臺API的復雜度。函數以glut開頭,它們作為aux庫功能更強的替代品, 提供更為復雜的繪制功能,此函數由glut.dll來負責解釋執行。 由于glut中的窗口管理函數是不依賴于運行環境的,因此OpenGL中的工具庫可以在X-Window、Windows NT、 OS/2等系統下運行,特別適合于開發不需要復雜界面的OpenGL示例程序。 對于有經驗的程序員來說,一般先用glut理順3D圖形代碼,然后再集成為完整的應用程序.這部分函數主要包括如下:
窗口操作函數
窗口初始化、大小、位置等函數glutInit()、glutInitDisplayMode()、glutInitWindowSize()、glutInitWindowPosition()等。
回調函數
響應刷新消息、鍵盤消息、鼠標消息、定時器函數等:GlutDisplayFunc()、glutPostRedisplay()、glutReshapeFunc()、glutTimerFunc()、glutKeyboardFunc()、glutMouseFunc()。
創建復雜的三維物體
這些和aux庫的函數功能相同.創建網狀體和實心體.如glutSolidSphere()、glutWireSphere()等。
菜單函數
創建添加菜單的函數GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu()和glutAttachMenu()。
程序運行函數glutMainLoop()。
本文信息資源來源于網絡,歡迎轉載!轉載時請保留本文鏈接(http://www.shopliyang.com.cn/)!