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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

OpenGL開發庫的介紹[轉載]

  開發基于 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 2007-04-07 22:08 楊粼波 閱讀(747) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            老色鬼久久亚洲一区二区| 久久综合久久综合久久综合| 亚洲欧洲综合另类| 狂野欧美激情性xxxx欧美| 在线精品一区| 亚洲经典三级| 欧美日韩在线观看一区二区| 亚洲午夜视频在线观看| 99视频超级精品| 国产精品久久久一区二区三区| 午夜精品999| 亚洲欧美国产制服动漫| 国产日韩一区二区三区在线| 久久久久9999亚洲精品| 久久久久久伊人| 99在线视频精品| 亚洲视频狠狠| 国产日韩综合一区二区性色av| 麻豆精品在线视频| 欧美激情小视频| 久久国产精品99久久久久久老狼| 久久久久久成人| 99热在线精品观看| 亚洲欧美日韩专区| 最新热久久免费视频| 亚洲天堂激情| 在线免费观看日韩欧美| 日韩视频在线观看国产| 国产欧美日韩视频在线观看| 亚洲国产精品嫩草影院| 国产精品入口尤物| 欧美成人激情视频| 国产精品日韩在线一区| 欧美岛国在线观看| 国产欧美日韩在线| 99精品视频免费观看| 悠悠资源网久久精品| 亚洲午夜精品一区二区三区他趣| 亚洲第一在线| 亚洲综合久久久久| 99精品国产热久久91蜜凸| 久久国产精品第一页| 亚洲午夜电影网| 欧美成人一区二区三区片免费| 久久精品国产精品| 国产精品大片wwwwww| 亚洲国产毛片完整版| 国产一区二区三区在线观看免费| 亚洲乱码国产乱码精品精天堂| 在线播放豆国产99亚洲| 欧美一级二级三级蜜桃| 亚洲综合欧美日韩| 欧美精品二区| 欧美国产精品日韩| 尤物九九久久国产精品的特点| 亚洲免费一区二区| 亚洲午夜激情网页| 欧美日韩日日夜夜| 亚洲精品久久久久久久久久久久久| 一区二区三区在线免费视频| 亚洲欧美日韩精品久久亚洲区 | 亚洲一区二区三区在线视频| 亚洲精品综合久久中文字幕| 免费亚洲一区| 美女诱惑一区| 在线免费高清一区二区三区| 久久久在线视频| 久久久久中文| 国内一区二区在线视频观看| 久久av资源网| 久久久久久久综合狠狠综合| 国产一区二区精品久久91| 亚洲免费在线看| 午夜精品视频在线观看一区二区| 欧美视频在线一区二区三区| 亚洲欧洲在线观看| 亚洲裸体俱乐部裸体舞表演av| 欧美成人亚洲成人| 欧美激情精品久久久久久大尺度 | 欧美视频免费在线观看| 99热这里只有精品8| 亚洲在线视频网站| 国产欧美日韩精品专区| 欧美在线视频一区二区三区| 欧美69wwwcom| 亚洲区国产区| 欧美日韩国产小视频在线观看| 亚洲日本成人在线观看| 在线亚洲免费视频| 国产欧美三级| 麻豆精品网站| 99精品欧美一区| 欧美一区二区日韩| 怡红院av一区二区三区| 欧美成人自拍| 亚洲在线免费观看| 免费亚洲一区| 亚洲私人影院| 伊人久久大香线| 欧美日韩亚洲综合在线| 欧美亚洲自偷自偷| 亚洲精品日韩激情在线电影| 久久riav二区三区| 亚洲激情电影中文字幕| 国产精品久久久999| 久久经典综合| 在线综合亚洲| 欧美a级片一区| 性18欧美另类| 日韩图片一区| 精品福利av| 国产精品区一区| 欧美/亚洲一区| 欧美一区在线直播| 日韩网站免费观看| 欧美国产三级| 欧美在线免费观看亚洲| 99亚洲伊人久久精品影院红桃| 国内成人在线| 国产精品一区免费视频| 欧美韩国日本一区| 久久精品视频在线看| 亚洲一区三区视频在线观看| 亚洲人线精品午夜| 美女网站在线免费欧美精品| 欧美在线关看| 午夜一区不卡| 亚洲欧美区自拍先锋| 艳妇臀荡乳欲伦亚洲一区| 亚洲第一黄网| 激情五月婷婷综合| 国产亚洲欧美一区二区| 国产免费成人| 欧美午夜不卡视频| 欧美日韩国产一区二区| 欧美国产日韩一区二区三区| 久久中文字幕一区| 久久久久久久一区二区| 久久精品卡一| 欧美在线www| 欧美在线高清视频| 欧美在线啊v一区| 久久成人久久爱| 欧美在线视频一区| 久久精品成人欧美大片古装| 午夜综合激情| 欧美一区二区三区视频| 欧美一区二区观看视频| 欧美综合第一页| 久久久99爱| 欧美va亚洲va日韩∨a综合色| 猛男gaygay欧美视频| 久久综合伊人77777| 欧美v亚洲v综合ⅴ国产v| 欧美成年视频| 欧美日韩国产在线| 国产精品乱码| 国产在线观看91精品一区| 国产在线视频欧美| 在线播放日韩| 一本不卡影院| 午夜在线观看欧美| 久久午夜激情| 亚洲国产欧美在线人成| 亚洲毛片在线观看| 亚洲一区国产精品| 久久久久久亚洲精品杨幂换脸 | 欧美日韩a区| 国产精品久久久久久福利一牛影视| 欧美午夜在线| 好看的亚洲午夜视频在线| 亚洲人体影院| 午夜精品www| 欧美高清一区| 亚洲色在线视频| 久久激情五月婷婷| 欧美日韩国产系列| 国产综合在线视频| 日韩视频免费看| 久久激情五月婷婷| 欧美激情久久久久久| 亚洲免费影视| 蜜桃伊人久久| 国产精品一区二区视频 | 国产精品普通话对白| 黄色国产精品一区二区三区| 亚洲美女一区| 久久riav二区三区| 亚洲三级电影全部在线观看高清| 亚洲一区二区三区精品在线观看 | 亚洲一品av免费观看| 久久久久国产一区二区三区| 欧美日韩在线免费观看| 亚洲国产老妈| 久久激情五月婷婷| 亚洲视频视频在线| 欧美精品精品一区| 亚洲高清中文字幕| 久久精品国产欧美激情| 一本一本大道香蕉久在线精品|