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

牽著老婆滿街逛

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

OpenGL開發(fā)庫(kù)的介紹[轉(zhuǎn)載]

  開發(fā)基于 OpenGL 的應(yīng)用程序,必須先了解 OpenGL 的庫(kù)函數(shù)。它采用 C 語(yǔ)言風(fēng)格,提供大量的函數(shù)來(lái)進(jìn)行圖形的處理和顯示。 OpenGL 庫(kù)函數(shù)的命名方式非常有規(guī)律。所有 OpenGL 函數(shù)采用了以下格式:

  < 庫(kù)前綴 >< 根命令 >< 可選的參數(shù)個(gè)數(shù) >< 可選的參數(shù)類型 >

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



  OpenGL 函數(shù)庫(kù)相關(guān)的 API 有核心庫(kù) (gl) 、實(shí)用庫(kù) (glu) 、輔助庫(kù) (aux) 、實(shí)用工具庫(kù) (glut) 、窗口庫(kù) (glx 、 agl 、 wgl) 和擴(kuò)展函數(shù)庫(kù)等。從圖可以看出, gl 是核心, glu 是對(duì) gl 的部分封裝。 glx 、 agl 、 wgl 是針對(duì)不同窗口系統(tǒng)的函數(shù)。 glut 是為跨平臺(tái)的 OpenGL 程序的工具包,比 aux 功能強(qiáng)大。擴(kuò)展函數(shù)庫(kù)是硬件廠商為實(shí)現(xiàn)硬件更新利用 OpenGL 的擴(kuò)展機(jī)制開發(fā)的函數(shù)。下面逐一對(duì)這些庫(kù)進(jìn)行詳細(xì)介紹。

  1 . OpenGL 核心庫(kù)

  核心庫(kù)包含有 115 個(gè)函數(shù),函數(shù)名的前綴為 gl 。這部分函數(shù)用于常規(guī)的、核心的圖形處理。此函數(shù)由 gl.dll 來(lái)負(fù)責(zé)解釋執(zhí)行。由于許多函數(shù)可以接收不同數(shù)以下幾類。據(jù)類型的參數(shù),因此派生出來(lái)的函數(shù)原形多達(dá) 300 多個(gè)。核心庫(kù)中的函數(shù)主要可以分為以下幾類函數(shù):

  繪制基本幾何圖元的函數(shù): glBegain() 、 glEnd() 、 glNormal*() 、 glVertex*() ;

  矩陣操作、幾何變換和投影變換的函數(shù):如矩陣入棧函數(shù) glPushMatrix() ,矩陣出棧函數(shù) glPopMatrix() ,裝載矩陣函數(shù) glLoadMatrix() ,矩陣相乘函數(shù) glMultMatrix() ,當(dāng)前矩陣函數(shù) glMatrixMode() 和矩陣標(biāo)準(zhǔn)化函數(shù) glLoadIdentity() ,幾何變換函數(shù) glTranslate*() 、 glRotate*() 和 glScale*() ,投影變換函數(shù) glOrtho() 、 glFrustum() 和視口變換函數(shù) glViewport() ;

  顏色、光照和材質(zhì)的函數(shù):如設(shè)置顏色模式函數(shù) glColor*() 、 glIndex*() ,設(shè)置光照效果的函數(shù) glLight*() 、 glLightModel*() 和設(shè)置材質(zhì)效果函數(shù) glMaterial() ;

  顯示列表函數(shù):主要有創(chuàng)建、結(jié)束、生成、刪除和調(diào)用顯示列表的函數(shù) glNewList() 、 glEndList() 、 glGenLists() 、 glCallList() 和 glDeleteLists() ;

  紋理映射函數(shù):主要有一維紋理函數(shù) glTexImage1D() 、二維紋理函數(shù) glTexImage2D() 、設(shè)置紋理參數(shù)、紋理環(huán)境和紋理坐標(biāo)的函數(shù) glTexParameter*() 、 glTexEnv*() 和 glTetCoord*() ;

  特殊效果函數(shù):融合函數(shù) glBlendFunc() 、反走樣函數(shù) glHint() 和霧化效果 glFog*() ;

  光柵化、象素操作函數(shù):如象素位置 glRasterPos*() 、線型寬度 glLineWidth() 、多邊形繪制模式 glPolygonMode() ,讀取象素 glReadPixel() 、復(fù)制象素 glCopyPixel() ;

  選擇與反饋函數(shù):主要有渲染模式 glRenderMode() 、選擇緩沖區(qū) glSelectBuffer() 和反饋緩沖區(qū) glFeedbackBuffer() ;

  曲線與曲面的繪制函數(shù):生成曲線或曲面的函數(shù) glMap*() 、 glMapGrid*() ,求值器的函數(shù) glEvalCoord*() glEvalMesh*() ;

  狀態(tài)設(shè)置與查詢函數(shù): glGet*() 、 glEnable() 、 glGetError() 。

  2 . OpenGL 實(shí)用庫(kù) The OpenGL Utility Library (GLU)

  包含有 43 個(gè)函數(shù),函數(shù)名的前綴為 glu 。 OpenGL 提供了強(qiáng)大的但是為數(shù)不多的繪圖命令,所有較復(fù)雜的繪圖都必須從點(diǎn)、線、面開始。 Glu 為了減輕繁重的編程工作,封裝了 OpenGL 函數(shù), Glu 函數(shù)通過調(diào)用核心庫(kù)的函數(shù),為開發(fā)者提供相對(duì)簡(jiǎn)單的用法,實(shí)現(xiàn)一些較為復(fù)雜的操作。此函數(shù)由 glu.dll 來(lái)負(fù)責(zé)解釋執(zhí)行。 OpenGL 中的核心庫(kù)和實(shí)用庫(kù)可以在所有的 OpenGL 平臺(tái)上運(yùn)行。主要包括了以下幾種:

  輔助紋理貼圖函數(shù): gluScaleImage() 、 gluBuild1Dmipmaps() 、 gluBuild2Dmipmaps() ;

  坐標(biāo)轉(zhuǎn)換和投影變換函數(shù):定義投影方式函數(shù) gluPerspective() 、 gluOrtho2D() 、 gluLookAt() ,拾取投影視景體函數(shù) gluPickMatrix() ,投影矩陣計(jì)算 gluProject() 和 gluUnProject() ;

  多邊形鑲嵌工具: gluNewTess() 、 gluDeleteTess() 、 gluTessCallback() 、 gluBeginPolygon() 、 gluTessVertex() 、 gluNextContour() 、 gluEndPolygon() ;

  二次曲面繪制工具,主要有繪制球面、錐面、柱面、圓環(huán)面 gluNewQuadric() 、 gluSphere() 、 gluCylinder() 、 gluDisk() 、 gluPartialDisk() 、 gluDeleteQuadric() ;

  非均勻有理 B 樣條繪制工具:主要用來(lái)定義和繪制 Nurbs 曲線和曲面,包括 gluNewNurbsRenderer() 、 gluNurbsCurve() 、 gluBeginSurface() 、 gluEndSurface() 、 gluBeginCurve() 、 gluNurbsProperty() ;

  錯(cuò)誤反饋工具:獲取出錯(cuò)信息的字符串 gluErrorString() 。

  3 . OpenGL 輔助庫(kù)

  包含有 31 個(gè)函數(shù),函數(shù)名前綴為 aux 。這部分函數(shù)提供窗口管理、輸入輸出處理以及繪制一些簡(jiǎn)單三維物體。此函數(shù)由 glaux.dll 來(lái)負(fù)責(zé)解釋執(zhí)行。創(chuàng)建 aux 庫(kù)是為了學(xué)習(xí)和編寫 OpenGL 程序,它更像是一個(gè)用于測(cè)試創(chuàng)意的預(yù)備基礎(chǔ)接管。 Aux 庫(kù)在 windows 實(shí)現(xiàn)有很多錯(cuò)誤,因此很容易導(dǎo)致頻繁的崩潰。在跨平臺(tái)的編程實(shí)例和演示中, aux 很大程度上已經(jīng)被 glut 庫(kù)取代。 OpenGL 中的輔助庫(kù)不能在所有的 OpenGL 平臺(tái)上運(yùn)行。

  輔助庫(kù)函數(shù)主要包括以下幾類:

  窗口初始化和退出函數(shù): auxInitDisplayMode() 和 auxInitPosition() ;

  窗口處理和時(shí)間輸入函數(shù): auxReshapeFunc() 、 auxKeyFunc() 和 auxMouseFunc() ;

  顏色索引裝入函數(shù): auxSetOneColor() ;

  三維物體繪制函數(shù):包括了兩種形式網(wǎng)狀體和實(shí)心體,如繪制立方體 auxWireCube() 和 auxSolidCube() 。這里以網(wǎng)狀體為例,長(zhǎng)方體 auxWireBox() 、環(huán)形圓紋面 auxWireTorus() 、圓柱 auxWireCylinder() 、二十面體 auxWireIcosahedron() 、八面體 auxWireOctahedron() 、四面體 auxWireTetrahedron() 、十二面體 auxWireDodecahedron() 、圓錐體 auxWireCone() 和茶壺 auxWireTeapot() ;

  背景過程管理函數(shù): auxIdleFunc() ;

  程序運(yùn)行函數(shù): auxMainLoop() 。

  4 . OpenGL 工具庫(kù) OpenGL Utility Toolkit

  包含大約 30 多個(gè)函數(shù),函數(shù)名前綴為 glut 。 glut 是不依賴于窗口平臺(tái)的 OpenGL 工具包,由 Mark KLilgrad 在 SGI 編寫(現(xiàn)在在 Nvidia ),目的是隱藏不同窗口平臺(tái) API 的復(fù)雜度。 函數(shù)以 glut 開頭,它們作為 aux 庫(kù)功能更強(qiáng)的替代品,提供更為復(fù)雜的繪制功能,此函數(shù)由 glut.dll 來(lái)負(fù)責(zé)解釋執(zhí)行。由于 glut 中的窗口管理函數(shù)是不依賴于運(yùn)行環(huán)境的,因此 OpenGL 中的工具庫(kù)可以在 X-Window, Windows NT, OS/2 等系統(tǒng)下運(yùn)行,特別適合于開發(fā)不需要復(fù)雜界面的 OpenGL 示例程序。對(duì)于有經(jīng)驗(yàn)的程序員來(lái)說(shuō),一般先用 glut 理順 3D 圖形代碼,然后再集成為完整的應(yīng)用程序。

  這部分函數(shù)主要包括:

  窗口操作函數(shù):窗口初始化、窗口大小、窗口位置函數(shù)等 [glutInit() 、 glutInitDisplayMode() 、 glutInitWindowSize() 、 glutInitWindowPosition()] ;

  回調(diào)函數(shù):響應(yīng)刷新消息、鍵盤消息、鼠標(biāo)消息、定時(shí)器函數(shù) [GlutDisplayFunc() 、 glutPostRedisplay() 、 glutReshapeFunc() 、 glutTimerFunc() 、 glutKeyboardFunc() 、 glutMouseFunc()] ;

  創(chuàng)建復(fù)雜的三維物體:這些和 aux 庫(kù)的函數(shù)功能相同;

  菜單函數(shù):創(chuàng)建添加菜單的函數(shù) GlutCreateMenu() 、 glutSetMenu() 、 glutAddMenuEntry() 、 glutAddSubMenu() 和 glutAttachMenu() ;

  程序運(yùn)行函數(shù): glutMainLoop() 。

  5 . Windows 專用庫(kù)

  針對(duì) windows 平臺(tái)的擴(kuò)展,包含有 16 個(gè)函數(shù),函數(shù)名前綴為 wgl 。這部分函數(shù)主要用于連接 OpenGL 和 Windows ,以彌補(bǔ) OpenGL 在文本方面的不足。 Windows 專用庫(kù)只能用于 Windows 環(huán)境中。

  這類函數(shù)主要包括以下幾類:

  繪圖上下文相關(guān)函數(shù): wglCreateContext() 、 wglDeleteContext() 、 wglGetCurrentContent() 、 wglGetCurrentDC() 、 wglDeleteContent() ;

  文字和文本處理函數(shù): wglUseFontBitmaps() 、 wglUseFontOutlines() ;

  覆蓋層、地層和主平面層處理函數(shù): wglCopyContext() 、 wglCreateLayerPlane() 、 wglDescribeLayerPlane() 、 wglReakizeLayerPlatte() ;

  其他函數(shù): wglShareLists() 、 wglGetProcAddress() 。

  6 . Win32 API 函數(shù)庫(kù)

  包含有 6 個(gè)函數(shù),函數(shù)名無(wú)專用前綴,是 win32 擴(kuò)展函數(shù)。這部分函數(shù)主要用于處理像素存儲(chǔ)格式和雙幀緩存;這 6 個(gè)函數(shù)將替換 Windows GDI 中原有的同樣的函數(shù)。 Win32API 函數(shù)庫(kù)只能用于 Windows 95/98/NT 環(huán)境中。

  7 . X 窗口專用庫(kù)

  是針對(duì) Unix 和 Linux 的擴(kuò)展函數(shù)。包括渲染上下文、繪制圖元、顯示列表、紋理貼圖等;
初始化: glXQueryExtension() ;

  渲染上下文函數(shù): glXCreateContext() 、 glXDestroyContext() 、 glXCopyContext() 、 glXMakeCurrent() 、 glXCreateGLXPixmap() ;

  執(zhí)行: glXWaitGL() 、 glXWaitX() ;

  緩沖區(qū)和字體: glXSwapBuffers() 、 glXUseXFont() 。

  8 .其他擴(kuò)展庫(kù)

  這些函數(shù)可能是新的 OpenGL 函數(shù),并沒有在標(biāo)準(zhǔn) OpenGL 庫(kù)中實(shí)現(xiàn),或者它們是用來(lái)擴(kuò)展已存在的OpenGL 函數(shù)的功能。和 glu 、 glx 和 wgl 一樣,這些 OpenGL 擴(kuò)展是由硬件廠商和廠商組織開發(fā)的。OpenGL 擴(kuò)展 (OpenGL Extention) 包含了大量的擴(kuò)展 API 函數(shù)。

  隨著硬件的更新,硬件廠商首先向 SGI 申請(qǐng)登記新的擴(kuò)展,編寫規(guī)格說(shuō)明書( specification )。然后按照說(shuō)明書進(jìn)行開發(fā)擴(kuò)展程序。不同的 OpenGL 實(shí)現(xiàn)( OpenGL Implementation )支持的擴(kuò)展可能不一樣,只有隨著某一擴(kuò)展的推廣與應(yīng)用以及硬件技術(shù)的提高該擴(kuò)展才會(huì)在所有的 OpenGL 實(shí)現(xiàn)中被給予支持,從而最終成為 OpenGL 標(biāo)準(zhǔn)庫(kù)的一部分。擴(kuò)展由 SGI 維護(hù),在 SGI 網(wǎng)站上列出了目前公開的已注冊(cè)的擴(kuò)展及其官方說(shuō)明書。擴(kuò)展源由擴(kuò)展函數(shù)的后綴來(lái)指明 ( 或使用擴(kuò)展常量后綴 ) 。例如,后綴 WIN 表明一個(gè)符合 Windows 規(guī)范的擴(kuò)展, EXT 或 ARB 后綴表明該擴(kuò)展由多個(gè)賣主定義。

  下面給出 OpenGL 官方規(guī)定的命名規(guī)則:
  ARB – OpenGL Architecture Review Board 正式核準(zhǔn)的擴(kuò)展,往往由廠商開發(fā)的擴(kuò)展發(fā)展而來(lái),如果同時(shí)存在廠商開發(fā)的擴(kuò)展和 ARB 擴(kuò)展,應(yīng)該優(yōu)先使用 ARB 擴(kuò)展;

  EXT – 多家 OpenGL 廠商同意支持的擴(kuò)展;

  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 公司開發(fā)的擴(kuò)展;

  SGIX – Silicon Graphics (experimental) 公司開發(fā)的實(shí)驗(yàn)性擴(kuò)展;

  SUN – Sun Microsystems ;

  WIN – Microsoft 。

  由于 OpenGL 擴(kuò)展在針對(duì)不同平臺(tái)和不同驅(qū)動(dòng), OpenGL 不可能把所有的接口程序全部放到 gl.h 、 glx.h 、 wgl.h 中,而是將這些函數(shù)頭放在了 glext.h 、 glxext.h 和 wglext.h 中。這些擴(kuò)展被看作時(shí) OpenGL 核心庫(kù)規(guī)范的增加和修改。

posted on 2007-04-07 22:08 楊粼波 閱讀(742) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   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>
            日韩一区二区精品视频| 亚洲欧美日韩在线播放| 亚洲一区二区三区免费观看| 另类综合日韩欧美亚洲| 久久久www成人免费毛片麻豆| 亚洲自拍偷拍福利| 亚洲综合色丁香婷婷六月图片| 亚洲私人影吧| 欧美一级视频免费在线观看| 欧美一区二区在线播放| 欧美在线视频一区二区三区| 久久夜色精品国产欧美乱极品| 免费成人高清| 999在线观看精品免费不卡网站| 亚洲小说区图片区| 欧美一区二视频| 欧美成人激情在线| 国产精品久久国产愉拍| 国产日韩专区| 99re热精品| 欧美在现视频| 亚洲国产精品久久久久秋霞不卡 | 午夜精品福利视频| 久久久久久久尹人综合网亚洲| 亚洲美女在线国产| 亚洲视频在线一区观看| 久久精品亚洲一区二区| 久久综合伊人| 在线亚洲+欧美+日本专区| 久久精品网址| 国产精品久久久一本精品| 亚洲大胆在线| 久久aⅴ国产紧身牛仔裤| 亚洲国产小视频| 欧美在线免费视频| 欧美激情影音先锋| 国外精品视频| 欧美伊久线香蕉线新在线| 亚洲国产欧美一区二区三区同亚洲| 宅男在线国产精品| 你懂的视频欧美| 国产日韩欧美| 亚洲少妇在线| 欧美激情久久久久| 久久久久久久性| 国产精品一区视频| 中文在线资源观看视频网站免费不卡| 久久综合久色欧美综合狠狠| 亚洲视频精选| 欧美激情性爽国产精品17p| 影音先锋在线一区| 久久久青草婷婷精品综合日韩 | 亚洲免费福利视频| 美日韩精品视频| 影音先锋久久精品| 久久久久九九九九| 欧美中文字幕精品| 国产视频精品xxxx| 久久成人av少妇免费| 亚洲一区欧美激情| 国产精品theporn| 国产精品99久久久久久人| 亚洲国产精品传媒在线观看 | 99天天综合性| 欧美色精品在线视频| 宅男精品导航| 9l国产精品久久久久麻豆| 欧美日韩国产综合一区二区| 9人人澡人人爽人人精品| 亚洲国产综合91精品麻豆| 欧美a级一区| 99re6热在线精品视频播放速度| 欧美大色视频| 欧美国产激情二区三区| 日韩一级大片在线| 在线视频日本亚洲性| 国产乱码精品一区二区三区不卡| 午夜视频一区| 久久福利影视| 久久免费高清视频| 亚洲国产高清一区二区三区| 欧美激情一区二区| 欧美日韩黄色大片| 欧美一区二区三区另类| 欧美在线观看视频在线| 亚洲国产一成人久久精品| 亚洲日本国产| 国产午夜精品美女毛片视频| 麻豆精品精品国产自在97香蕉| 老鸭窝91久久精品色噜噜导演| 99热这里只有成人精品国产| 亚洲午夜一区二区| 尤妮丝一区二区裸体视频| 亚洲欧洲一区二区在线播放| 国产精品久久久久免费a∨| 久久嫩草精品久久久久| 欧美久久久久中文字幕| 久久精品国产久精国产爱| 免费av成人在线| 午夜精品一区二区在线观看 | 亚洲精品国产系列| 亚洲永久在线观看| 亚洲区第一页| 欧美影院在线| 正在播放日韩| 久久久综合网| 午夜精品99久久免费| 美女国产一区| 欧美一级理论片| 欧美韩日一区二区| 久久精品免费电影| 欧美午夜电影完整版| 欧美成人福利视频| 国产乱码精品一区二区三区五月婷 | 久久久久这里只有精品| 亚洲黄色小视频| 久久er99精品| 亚洲在线播放电影| 欧美精品一区二区三区一线天视频| 亚洲婷婷在线| 欧美极品在线播放| 欧美1区2区3区| 国内成+人亚洲| 午夜欧美不卡精品aaaaa| 亚洲一区不卡| 欧美久久久久久久久| 欧美激情一区二区三区全黄| 国产综合亚洲精品一区二| 亚洲欧美精品在线| 亚洲一区精品视频| 欧美日韩在线播放三区四区| 亚洲第一综合天堂另类专| 亚洲第一视频| 久久全国免费视频| 免费欧美在线| 亚洲国产精品一区在线观看不卡 | 久久久久久婷| 久久久夜夜夜| 久久成人资源| 久久综合网络一区二区| 激情婷婷欧美| 久久久国产成人精品| 欧美在线你懂的| 国产精品一区视频| 欧美一区二区三区四区在线观看地址 | 欧美精品免费在线观看| 另类激情亚洲| 亚洲国产欧美不卡在线观看| 卡通动漫国产精品| 亚洲国产欧美一区二区三区同亚洲 | 亚洲国产精品www| 性久久久久久久| 欧美一区二区三区久久精品| 国产精品香蕉在线观看| 性做久久久久久久免费看| 久久日韩粉嫩一区二区三区| 激情久久影院| 欧美第一黄色网| 亚洲精品国产精品国自产观看| 99国产精品国产精品久久| 国产精品av久久久久久麻豆网| 亚洲在线中文字幕| 麻豆精品传媒视频| 99re热这里只有精品免费视频| 欧美精品麻豆| 午夜在线电影亚洲一区| 欧美成人四级电影| 亚洲视频播放| 好男人免费精品视频| 欧美激情91| 亚洲一区二区成人| 久热精品视频在线| 亚洲天堂av图片| 国产一区清纯| 欧美日韩大陆在线| 欧美在线视频全部完| 亚洲人成高清| 久久一区二区三区av| 日韩一级片网址| 国产有码一区二区| 欧美三级视频在线播放| 久久狠狠亚洲综合| 一卡二卡3卡四卡高清精品视频| 久久亚洲影院| 先锋影音久久| 一区二区三区精品久久久| 精品成人a区在线观看| 欧美日韩综合视频网址| 久久久91精品| 亚洲男同1069视频| 亚洲免费高清视频| 亚洲大胆av| 麻豆国产精品va在线观看不卡| 亚洲综合三区| 亚洲午夜久久久久久尤物 | 影音先锋日韩精品| 国产日韩在线看| 国产精品视频久久| 欧美日韩国语| 99成人在线|