小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

OpenGL的版本及各種庫(kù) - 孤浪涯的日志 - 網(wǎng)易博客

 kimbaku 2011-01-04

OpenGL的版本及各種庫(kù)

Computer Graphics 2010-07-08 15:57:33 閱讀36 評(píng)論0   字號(hào): 訂閱

Microsoft都不想支持OpenGL了哈,所以Windows下OpenGL都停留在1.1的版本,更甚的好像是Win7就根本沒有給裝OpenGL,因?yàn)槲已b完Win7的時(shí)候OpenGL工程是找不到頭文件的,要自己去下載,遙想當(dāng)時(shí)找了半天也找不到下載地址,想想竟然使用這么廣泛的東西竟然沒有官方網(wǎng)站可以去下載的,還是從什么亂七八糟的地方下載了一個(gè)壓縮包,里面有g(shù)l、glu、glut、glaux、alext、wglext,版本未知,可以從這下載到。由于有太多的版本和擴(kuò)展庫(kù)了,太亂了,雖然看到很多介紹,但是過一段時(shí)間總免不了忘了。還是把他們都列出來吧:

(1)OpenGL核心庫(kù)

也就是gl.h、opengl32.lib、opengl.dll了。最核心的庫(kù)了,OpenGL程序肯定要用到這個(gè)庫(kù)啦。里面是最基本的圖元操作,如點(diǎn)、線什么的。

(2)GLU輔助庫(kù)

也就是glu.h、glu32.lib、glu.dll了。是僅次于核心庫(kù)的庫(kù)了,是所有OpenGL的標(biāo)準(zhǔn)中都會(huì)包含的,所以肯定是要有這個(gè)庫(kù)啦。這個(gè)庫(kù)其實(shí)也沒做什么東西,就是用核心庫(kù)中的函數(shù)包裝了一下,有一些功能更強(qiáng)大的函數(shù),如gluSphere()一下就可以畫個(gè)圓了,可是要在核心庫(kù)中估計(jì)得半天。

(3)GLUT窗口管理庫(kù)

也就是glut.h、glut32.lib、glut32.dll了。OpenGL是與窗口管理系統(tǒng)無(wú)關(guān)的,所以在Windows下面的OpenGL程序可能會(huì)用MFC來做窗口,在Linux下可能就是X Window窗口了。所以O(shè)penGL估計(jì)覺得要做就得做得全一點(diǎn),一條龍服務(wù)嘛,就也弄了個(gè)窗口管理庫(kù)GLUT。這個(gè)庫(kù)是用來實(shí)現(xiàn)如產(chǎn)生窗口、消息循環(huán)等窗口系統(tǒng)功能的,而且是跨平臺(tái)的,也就是寫出來的程序在Windows下運(yùn)行的樣子與Linux下運(yùn)行的窗口樣子都一樣。當(dāng)然也可以不用GLUT窗口庫(kù),改用其他的窗口系統(tǒng),那就需要有個(gè)接口可以使窗口系統(tǒng)與OpenGL進(jìn)行交流,在Windows下是wgl打頭的一類函數(shù),在XWindow下是xgl打頭的一類函數(shù)。其他的類似。

(4)GLEXT擴(kuò)展庫(kù)

想使用更高版本GL的特性,你必須包含該頭文件,并將你的顯卡驅(qū)動(dòng)更新到最新版本。

glext庫(kù)用于根據(jù)顯卡廠商對(duì)某個(gè)extension的具體說明來定義一些宏并聲明一些函數(shù)指針的類型,所以其是與顯示硬件相關(guān)的。

下面的來自:http://www.cnblogs.com/madfrog/archive/2010/06/25/1765243.html

下面就是glext為我們做的事:
a.根據(jù)顯卡廠商對(duì)某個(gè)extension的具體說明來定義一些宏.
#define GL_ARRAY_BUFFER_ARB 0x8892 //具體的地址是在各個(gè)specification中定義的.
#define GL_STATIC_DRAW_ARB 0x88E4
b. 聲明一些函數(shù)指針的類型.
typedef void (APIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
typedef void (APIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
typedef void (APIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
typedef void (APIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, int size, const GLvoid *data, GLenum usage);
然后在我自己的實(shí)現(xiàn)中就需要做以下的事:
a.聲明定義一些函數(shù)指針:
PFNGLGENBUFFERSARBPROC glGenBuffersARB = NULL;
PFNGLBINDBUFFERARBPROC glBindBufferARB = NULL;
PFNGLBUFFERDATAARBPROC glBufferDataARB = NULL;
PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB = NULL;
b. 利用wglGetProcAddress函數(shù)取得各個(gè)函數(shù)的地址指針.
glBindBufferARB = (PFNGLBINDBUFFERARBPROC)wglGetProcAddress("glBindBufferARB");
glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)wglGetProcAddress("glGenBuffersARB");
glBufferDataARB = (PFNGLBUFFERDATAARBPROC)wglGetProcAddress("glBufferDataARB");
而其實(shí)在glATI.h, wglATI.h, ATIExtensions.h, and ATIExtensions.c中也是這么做的.
而下面介紹的那些glew, glee就將上面4步都給我們做了.
所以當(dāng)使用擴(kuò)展功能的時(shí)候,要么是下載glext回來,自己提供源代碼實(shí)現(xiàn)上面的兩步,要么是直接用glew或者glee.

(5)GLEW庫(kù)

轉(zhuǎn)摘自:http://blog.csdn.net/a117653909/archive/2010/03/26/5418604.aspx

GLEW是一個(gè)跨平臺(tái)的C++擴(kuò)展庫(kù),基于OpenGL圖形接口。使用OpenGL的朋友都知道,window目前只支持OpenGL1.1的涵數(shù),但 OpenGL現(xiàn)在都發(fā)展到2.0以上了,要使用這些OpenGL的高級(jí)特性,就必須下載最新的擴(kuò)展,另外,不同的顯卡公司,也會(huì)發(fā)布一些只有自家顯卡才支 持的擴(kuò)展函數(shù),你要想用這數(shù)涵數(shù),不得不去尋找最新的glext.h,有了GLEW擴(kuò)展庫(kù),你就再也不用為找不到函數(shù)的接口而煩惱,因?yàn)镚LEW能自動(dòng)識(shí) 別你的平臺(tái)所支持的全部OpenGL高級(jí)擴(kuò)展涵數(shù)。也就是說,只要包含一個(gè)glew.h頭文件,你就能使用gl,glu,glext,wgl,glx的全 部函數(shù)。GLEW支持目前流行的各種操作系統(tǒng)(including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris)。

官方主頁(yè):http://glew./

(6)GLEE庫(kù)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多