青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 1,  comments - 6,  trackbacks - 0

開發基于OpenGL的應用程序,必須先了解OpenGL的庫函數。它采用C語言風格,提供大量的函數來進行圖形的處理和顯示。OpenGL庫函數的命名方式非常有規律。所有OpenGL函數采用了以下格式:

<庫前綴><根命令><可選的參數個數><可選的參數類型>

  庫前綴有gl、glu、aux、glut、wgl、glx、agl等等,分別表示該函數屬于OpenGL那個開 發庫,從函數名后面中還可以看出需要多少個參數以及參數的類型。I代表int型,f代表float型,d代表double型,u代表無符號整型。例如 glVertex3fv()表示了該函數屬于gl庫,參數是三個float型參數指針。我們用glVertex*()

來表示這一類函數。

 

  OpenGL函數庫相關的API有核心庫(gl)、實用庫(glu)、輔助庫(aux)、實用工具庫(glut)、窗口庫(glx、 agl、wgl)和擴展函數庫等。從圖可以看出,gl是核心,glu是對gl的部分封裝。glx、agl、wgl 是針對不同窗口系統的函數。glut是為跨平臺的OpenGL程序的工具包,比aux功能強大。擴展函數庫是硬件廠商為實現硬件更新利用OpenGL的擴 展機制開發的函數。下面逐一對這些庫進行詳細介紹。

1.OpenGL核心庫

  核心庫包含有115個函數,函數名的前綴為gl。這部分函數用于常規的、核心的圖形處理。此函數由gl.dll來負責解釋執行。由于許多函數可以接收不同數以下幾類。據類型的參數,因此派生出來的函數原形多達300多個。核心庫中的函數主要可以分為以下幾類函數:

  • 繪制基本幾何圖元的函數: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()。

2.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()、gluTessVertex()、gluNextContour()、gluEndPolygon();
  • 二次曲面繪制工具,主要有繪制球面、錐面、柱面、圓環面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric();
  • 非均勻有理B樣條繪制工具:主要用來定義和繪制Nurbs曲線和曲面,包括gluNewNurbsRenderer()、 gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、 gluNurbsProperty();
  • 錯誤反饋工具:獲取出錯信息的字符串gluErrorString()。

3.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()。

4.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庫的函數功能相同;
  • 菜單函數:創建添加菜單的函數GlutCreateMenu()、glutSetMenu()、glutAddMenuEntry()、glutAddSubMenu()和glutAttachMenu();
  • 程序運行函數:glutMainLoop()。

5.Windows專用庫

  針對windows平臺的擴展,包含有16個函數,函數名前綴為wgl。這部分函數主要用于連接OpenGL和Windows ,以彌補OpenGL在文本方面的不足。   Windows專用庫只能用于Windows環境中。

  這類函數主要包括以下幾類:

  • 繪圖上下文相關函數:wglCreateContext()、wglDeleteContext()、wglGetCurrentContent()、wglGetCurrentDC()、wglDeleteContent();
  • 文字和文本處理函數:wglUseFontBitmaps()、wglUseFontOutlines();
  • 覆蓋層、地層和主平面層處理函數:wglCopyContext()、wglCreateLayerPlane()、wglDescribeLayerPlane()、wglReakizeLayerPlatte();
  • 其他函數:wglShareLists()、wglGetProcAddress()。

6.Win32 API函數庫

  包含有6個函數,函數名無專用前綴,是win32擴展函數。這部分函數主要用于處理像素存儲格式和雙幀緩存;這6個函數將替換Windows GDI中原有的同樣的函數。Win32API函數庫只能用于Windows 95/98/NT環境中。

7.X窗口專用庫

  是針對Unix和Linux的擴展函數。包括渲染上下文、繪制圖元、顯示列表、紋理貼圖等;

  • 初始化:glXQueryExtension();
  • 渲染上下文函數:glXCreateContext()、glXDestroyContext()、glXCopyContext()、glXMakeCurrent()、glXCreateGLXPixmap();
  • 執行:glXWaitGL()、glXWaitX();
  • 緩沖區和字體:glXSwapBuffers()、glXUseXFont()。

8.其他擴展庫

   這些函數可能是新的OpenGL函數,并沒有在標準OpenGL庫中實現,或者它們是用來擴展已存在的OpenGL函數的功能。和glu、glx和 wgl一樣,這些OpenGL擴展是由硬件廠商和廠商組織開發的。OpenGL擴展(OpenGL Extention)包含了大量的擴展API函數。

   隨著硬件的更新,硬件廠商首先向SGI申請登記新的擴展,編寫規格說明書(specification)。然后按照說明書進行開發擴展程序。不同的 OpenGL實現(OpenGL Implementation)支持的擴展可能不一樣,只有隨著某一擴展的推廣與應用以及硬件技術的提高該擴展才會在所有的OpenGL實現中被給予支 持,從而最終成為OpenGL標準庫的一部分。擴展由SGI維護,在SGI網站上列出了目前公開的已注冊的擴展及其官方說明書。擴展源由擴展函數的后綴來 指明(或使用擴展常量后綴)。例如,后綴WIN表明一個符合Windows規范的擴展,EXT或ARB后綴表明該擴展由多個賣主定義。

下面給出OpenGL官方規定的命名規則:

  • ARB – OpenGL Architecture Review Board正式核準的擴展,往往由廠商開發的擴展發展而來,如果同時存在廠商開發的擴展和ARB擴展,應該優先使用ARB擴展;
  • EXT – 多家OpenGL廠商同意支持的擴展;
  • HP – Hewlett-Packard 惠普;
  • IBM – International Business Machines ;
  • KTX – Kinetix, maker of 3D Studio Max ;
  • INTEL – Intel 公司;
  • NV – NVIDIA 公司;
  • MESA – Brian Paul’s freeware portable OpenGL implementation ;
  • SGI – Silicon Graphics公司開發的擴展;
  • SGIX – Silicon Graphics (experimental) 公司開發的實驗性擴展;
  • SUN – Sun Microsystems;
  • WIN – Microsoft 。

  由于OpenGL擴展在針對不同平臺和不同驅動,OpenGL不可能把所有的接口程序全部放到gl.h、glx.h、wgl.h中,而是將這些函數頭放在了glext.h、glxext.h和wglext.h中。這些擴展被看作時OpenGL核心庫規范的增加和修改。

posted on 2008-08-31 03:56 bneliao 閱讀(410) 評論(0)  編輯 收藏 引用 所屬分類: graph/game
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿

隨筆檔案

文章分類

文章檔案

BLOG連接

D3D

GAME

搜索

  •  

積分與排名

  • 積分 - 11557
  • 排名 - 1114

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产午夜精品全部视频在线播放| 亚洲美女毛片| 欧美亚洲免费在线| 午夜亚洲激情| 欧美一区二区三区在线视频 | 国产精品入口| 国产精品久久久久久久久久尿| 欧美日韩国产探花| 国产精品国产| 国产一区视频观看| 1000部国产精品成人观看| 亚洲区中文字幕| 一道本一区二区| 久久av资源网| 美国十次了思思久久精品导航| 欧美成人免费小视频| 99国产精品久久久久久久久久| 夜夜嗨av色综合久久久综合网| 欧美国产日韩亚洲一区| 亚洲黄色视屏| 亚洲激情黄色| 亚洲欧美日韩中文播放| 久久午夜羞羞影院免费观看| 欧美日韩国产不卡在线看| 国产精品成人一区二区艾草| 很黄很黄激情成人| 亚洲性线免费观看视频成熟| 久久久精品欧美丰满| 欧美韩日一区二区| 欧美日韩综合视频网址| 亚洲高清av| 欧美一区二区三区在线观看| 久久久一区二区| 一区二区三区久久| 快射av在线播放一区| 国产精品试看| 亚洲免费成人av| 免费观看成人www动漫视频| a91a精品视频在线观看| 久久婷婷成人综合色| 国产视频不卡| 亚洲一区二区三区在线播放| 亚洲福利视频一区二区| 久久久久网址| 国内成人精品一区| 欧美一进一出视频| 99视频在线精品国自产拍免费观看 | 亚洲韩国精品一区| 久久午夜电影网| 极品尤物av久久免费看| 欧美在线观看视频在线| 亚洲一级特黄| 国产精品尤物| 欧美综合国产| 性欧美暴力猛交另类hd| 国产欧美日韩精品一区| 亚洲一区三区视频在线观看| 亚洲人成毛片在线播放| 免费精品视频| 亚洲免费观看在线视频| 亚洲精品一级| 国产精品高潮呻吟久久av无限 | 一区二区三区 在线观看视频| 免费在线国产精品| 最新国产成人在线观看| 亚洲大片免费看| 欧美国产激情二区三区| 亚洲精品自在久久| 91久久国产综合久久| 国产一区二区三区在线观看免费| 亚洲国产一区二区视频| 欧美大片免费久久精品三p | 午夜精品视频一区| 国产日韩欧美综合精品| 久久精品国产欧美激情| 久久精品国产99国产精品澳门| 国产又爽又黄的激情精品视频| 久久精品国产欧美激情| 久久久久久久综合色一本| 91久久综合亚洲鲁鲁五月天| 亚洲狠狠婷婷| 国产精品欧美风情| 老色鬼精品视频在线观看播放| 久久久亚洲国产天美传媒修理工| 亚洲国产成人久久综合一区| 亚洲欧洲视频| 国产精品天天看| 嫩草国产精品入口| 欧美视频一区二区在线观看| 久久久久久久精| 欧美激情欧美狂野欧美精品| 午夜精品电影| 免费欧美日韩国产三级电影| 午夜精品在线观看| 欧美大片在线影院| 久久国产精品一区二区| 欧美黑人多人双交| 久久精品国产久精国产一老狼 | 亚洲激情影院| 国产欧美精品日韩区二区麻豆天美| 牛夜精品久久久久久久99黑人| 欧美日韩综合视频网址| 欧美mv日韩mv国产网站| 欧美色区777第一页| 美女久久一区| 国产日本欧美在线观看| 亚洲日本一区二区三区| 国产伦精品一区二区三区视频孕妇| 欧美高清在线精品一区| 国产精品日韩欧美| 亚洲毛片av| 亚洲精品一区二| 久久精品亚洲一区| 香蕉久久精品日日躁夜夜躁| 欧美区日韩区| 欧美电影免费观看高清完整版| 国产精品日韩在线| 亚洲黄色在线观看| 伊人久久亚洲影院| 欧美一区二区三区免费视频| 亚洲一区免费在线观看| 美女国产一区| 欧美88av| 精品av久久久久电影| 性色av一区二区三区红粉影视| 日韩一二三在线视频播| 免费成人av在线看| 牛人盗摄一区二区三区视频| 国产精品免费一区二区三区观看| 在线成人h网| 午夜国产不卡在线观看视频| 亚洲美女网站| 欧美精品18videos性欧美| 美女性感视频久久久| 国产一区在线观看视频| 午夜精品一区二区三区在线播放| 亚洲视频在线播放| 欧美日韩系列| 99精品国产在热久久下载| 一区二区三区www| 欧美色精品天天在线观看视频| 亚洲美女av电影| 一区电影在线观看| 欧美日本亚洲| 宅男精品视频| 欧美亚洲一区| 国产精品任我爽爆在线播放| 亚洲先锋成人| 久久香蕉国产线看观看av| 在线精品福利| 美腿丝袜亚洲色图| 亚洲黄色成人网| 99riav国产精品| 国产精品国产自产拍高清av| 中国av一区| 久久精品国产免费观看| 黄色精品免费| 欧美激情一区二区三区蜜桃视频 | 一区二区三区亚洲| 久热精品视频在线观看一区| 欧美激情视频网站| 一区二区三区欧美日韩| 国产精品天美传媒入口| 久久久91精品国产一区二区精品| 欧美高清在线一区| 亚洲在线一区二区三区| 韩国v欧美v日本v亚洲v| 欧美激情一区二区三区不卡| 亚洲影视综合| 欧美国产日韩免费| 欧美亚洲免费| 亚洲激情国产| 国产麻豆91精品| 免费成人性网站| 亚洲摸下面视频| 亚洲国产你懂的| 久久精品国产成人| 一本色道久久综合精品竹菊 | 国产精品高潮呻吟久久av无限| 欧美一区二区三区四区在线| 最新热久久免费视频| 久久精品一级爱片| 国产精品99久久99久久久二8 | 欧美精品三级| 欧美在线视频网站| 一本大道久久精品懂色aⅴ| 久热精品视频在线观看| 亚洲香蕉成视频在线观看| 国内偷自视频区视频综合| 欧美日韩高清一区| 欧美亚洲一区二区在线| 亚洲精品一区二区三区蜜桃久| 亚洲欧美一区二区三区在线| 亚洲国产精品一区二区三区| 国产乱码精品一区二区三区av| 欧美极品aⅴ影院| 久久婷婷人人澡人人喊人人爽| 亚洲欧美日韩在线播放| 99视频有精品| 亚洲免费大片|