OpenGL 库 简介
OpenGL 庫 簡介
???????OpenGL庫函數的命名方式為:<庫前綴><根命令><可選的參數個數><可選的參數類型>。
庫前綴有gl、glu、aux、glut、wgl、glx、agl等等,表示該函數屬于OpenGL哪個庫。參數的類型:I代表int型,f代表float型,d代表double型,u代表無符號整型。例如glVertex3fv()表示了該函數屬于gl庫,參數是3個float型參數指針。用glVertex*()來表示這一類函數。
?
| ? | gl | glu | aux | glut |
| 庫名稱 | 基本庫 | 實用庫 | 輔助庫 | 實用工具庫 |
| 庫前綴 | gl | glu | aux | glut |
| 與其它庫聯系 | ? | 對gl的部分封裝,提供相對簡單的用法,實現一些較為復雜的操作。 | ? | 比aux功能強大,替代aux。 |
| 函數個數 | 115 | 43 | 31 | 30多 |
| 庫作用 | 常規的、核心的圖形處理。 | 繪制復雜的曲線曲面、高級坐標變換、多邊形分割等。 | 簡單的窗口管理、輸入事件處理、復雜3D物體繪制等。 | 用來打開窗口、開發和管理菜單,管理事件。 |
| 運行平臺 | 所有 | 所有 | aux庫在windows實現有很多錯誤,容易導致頻繁的崩潰。在跨平臺的編程實例和演示中,aux很大程度上已經被glut庫取代。不能在所有平臺上運行。 | X-Window, Windows NT, OS/2等。特別適合于開發不需要復雜界面的OpenGL示例程序。一般先用glut理順3D圖形代碼,然后再集成為完整的應用程序。 |
| 解釋執行 | gl.dll | glu.dll | glaux.dll | glut.dll |
| ? | wgl | ? | ? | ? |
| 庫名稱 | Windows專用庫 | Win32 API函數庫 | X窗口專用庫 | 擴展函數庫 |
| 庫前綴 | wgl | 無專用 | ? | ? |
| 與其它庫聯系 | 針對windows平臺的擴展。連接OpenGL和Windows,彌補OpenGL在文本方面的不足。 | win32擴展函數 | 針對Unix和Linux的擴展函數。 ? | ? |
| 函數個數 | 16 | 6 | ? | ? |
| 庫作用 | 創建和選擇圖形操作描述表以及在窗口內任一位置顯示字符位圖。 | 處理像素存儲格式和雙幀緩存。 | 渲染上下文、繪制圖元、顯示列表、紋理貼圖、等。 | 硬件廠商為實現硬件更新利用OpenGL的擴展機制開發的函數。 |
| 運行平臺 | Windows | Windows95/98/NT | ? | ? |
| 解釋執行 | ? | ? | ? | ? |
?
1、基本庫(GL)
(1)繪制基本幾何圖元的函數。
glBegain()、glEnd()、glNormal*()、glVertex*()。
(2)矩陣操作、幾何變換和投影變換的函數。
矩陣入棧函數glPushMatrix(),矩陣出棧函數glPopMatrix(),裝載矩陣函數glLoadMatrix(),矩陣相乘函數glMultMatrix(),當前矩陣函數glMatrixMode()和矩陣標準化函數glLoadIdentity(),幾何變換函數glTranslate*()、glRotate*()和glScale*(),投影變換函數glOrtho()、glFrustum()和視口變換函數glViewport()。
(3)顏色、光照和材質的函數。
如設置顏色模式函數glColor*()、glIndex*(),設置光照效果的函數glLight*()?、glLightModel*()和設置材質效果函數glMaterial()等等。
(4)顯示列表函數。
主要有創建、結束、生成、刪除和調用顯示列表的函數glNewList()、glEndList()、glGenLists()、glCallList()和glDeleteLists()等。
(5)紋理映射函數。
主要有一維紋理函數glTexImage1D()、二維紋理函數glTexImage2D()、設置紋理參數、紋理環境和紋理坐標的函數glTexParameter*()、glTexEnv*()和glTetCoord*()等。
(6)特殊效果函數。
融合函數glBlendFunc()、反走樣函數glHint()和霧化效果glFog*()。
(7)光柵化、象素操作函數。
像素位置glRasterPos*()、線型寬度glLineWidth()、多邊形繪制模式glPolygonMode(),讀取象素glReadPixel()、復制象素glCopyPixel()等。
(8)選擇與反饋函數。
主要有渲染模式glRenderMode()、選擇緩沖區glSelectBuffer()和反饋緩沖區glFeedbackBuffer()等。
(9)曲線與曲面的繪制函數。
生成曲線或曲面的函數glMap*()、glMapGrid*(),求值器的函數glEvalCoord*() glEvalMesh*()。
(10)狀態設置與查詢函數。主要有glGet*()、glEnable()、glGetError()等。
?
2、實用庫(OpenGL Utility Library,GLU)
(1)輔助紋理貼圖函數。
有gluScaleImage()?、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()等。
(2)坐標轉換和投影變換函數。
定義投影方式函數gluPerspective()、gluOrtho2D()?、gluLookAt(),拾取投影視景體函數gluPickMatrix(),投影矩陣計算gluProject()和?gluUnProject()等。
(3)多邊形鑲嵌工具。
有gluNewTess()、?gluDeleteTess()、gluTessCallback()、gluBeginPolygon() gluTessVertex()、gluNextContour()、gluEndPolygon()等。
(4)二次曲面繪制工具。
主要有繪制球面、錐面、柱面、圓環面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric()等等。
(5)非均勻有理B樣條繪制工具。
主要用來定義和繪制Nurbs曲線和曲面,包括gluNewNurbsRenderer()、gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、gluNurbsProperty()等函數。
(6)錯誤反饋工具。
獲取出錯信息的字符串gluErrorString()等。
?
3、輔助庫(OpenGL auxiliarylibrary,GLAUX)
(1)窗口初始化和退出函數。
auxInitDisplayMode()和auxInitPosition()。
(2)窗口處理和時間輸入函數。
auxReshapeFunc()、auxKeyFunc()和auxMouseFunc()。
(3)顏色索引裝入函數。
auxSetOneColor()。
(4)三維物體繪制函數。
包括了兩種形式網狀體和實心體,如繪制立方體auxWireCube()和?auxSolidCube()。這里以網狀體為例,長方體auxWireBox()、環形圓紋面auxWireTorus()、圓柱?auxWireCylinder()、二十面體auxWireIcosahedron()、八面體auxWireOctahedron()、四面體?auxWireTetrahedron()、十二面體auxWireDodecahedron()、圓錐體auxWireCone()和茶壺?auxWireTeapot()。繪制實心體只要將上述函數中的確"Wire"更換成"Solid"就可以了。
(5)其他。
背景過程管理函數auxIdleFunc();程序運行函數auxMainLoop()。
?
4、OpenGL實用工具包(OpenGL Utility Toolkit,GLUT)
(1)窗口操作函數
窗口初始化、窗口大小、窗口位置等函數glutInit() glutInitDisplayMode()、glutInitWindowSize() glutInitWindowPosition()等。
(2)回調函數。
響應刷新消息、鍵盤消息、鼠標消息、定時器函數等,GlutDisplayFunc()、glutPostRedisplay()、glutReshapeFunc()、glutTimerFunc()、glutKeyboardFunc()、?glutMouseFunc()。
(3)創建復雜的三維物體。這些和aux庫的函數功能相同。創建網狀體和實心體。如glutSolidSphere()、glutWireSphere()等。
(4)菜單函數
創建添加菜單的函數GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu()和glutAttachMenu()。
(5)程序運行函數。
glutMainLoop()。
?
5、Windows專用庫
(1)繪圖上下文相關函數。
wglCreateContext()、wglDeleteContext()、wglGetCurrentContent()、wglGetCurrentDC() wglDeleteContent()等。
(2)文字和文本處理函數。
wglUseFontBitmaps()、wglUseFontOutlines()。
(3)覆蓋層、地層和主平面層處理函數。
wglCopyContext()、wglCreateLayerPlane()、wglDescribeLayerPlane()、wglReakizeLayerPlatte()等。
(4)其他函數。
wglShareLists()、wglGetProcAddress()等。
?
6、X窗口專用庫
(1)初始化
glXQueryExtension()
(2)渲染上下文函數
glXCreateContext() glXDestroyContext() glXCopyContext() glXMakeCurrent() glXCreateGLXPixmap()
(3)執行
glXWaitGL()、glXWaitX()
(4)緩沖區和字體
glXSwapBuffers()、glXUseXFont()
總結
以上是生活随笔為你收集整理的OpenGL 库 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 写字楼投资划算吗?投资写字楼的利与弊
- 下一篇: 你悼念的不是盖泡面的Kindle 是过去