的運(yùn)行機(jī)理
1.Open GL的工作流程
整個(gè)Open GL的基本工作流程如圖7-1所示。
圖7-1 Open GL基本工作流程
其中幾何頂點(diǎn)數(shù)據(jù)包括模型的頂點(diǎn)集、線集、多邊形集,這些數(shù)據(jù)經(jīng)過流程圖的上部,包括運(yùn)算器、逐個(gè)頂點(diǎn)操作等;圖像數(shù)據(jù)包括像素集、影像集、位圖集等,圖像像素?cái)?shù)據(jù)的處理方式與幾何頂點(diǎn)數(shù)據(jù)的處理方式是不同的,但它們都經(jīng)過光柵化、逐個(gè)片元(Fragment)處理直至把最后的光柵數(shù)據(jù)寫入幀緩沖器。在Open GL中的所有數(shù)據(jù)包括幾何頂點(diǎn)數(shù)據(jù)和像素?cái)?shù)據(jù)都可以被存儲(chǔ)在顯示列表中或者立即可以得到處理。Open GL中,顯示列表技術(shù)是一項(xiàng)重要的技術(shù)。
Open GL要求把所有的幾何圖形單元都用頂點(diǎn)來描述,這樣運(yùn)算器和逐個(gè)頂點(diǎn)計(jì)算操作都可以針對(duì)每個(gè)頂點(diǎn)進(jìn)行計(jì)算和操作,然后進(jìn)行光柵化形成圖形碎片;對(duì)于像素?cái)?shù)據(jù),像素操作結(jié)果被存儲(chǔ)在紋理組裝用的內(nèi)存中,再像幾何頂點(diǎn)操作一樣光柵化形成圖形片元。
整個(gè)流程操作的最后,圖形片元都要進(jìn)行一系列的逐個(gè)片元操作,這樣最后的像素值送入幀緩沖器實(shí)現(xiàn)圖形的顯示。
2.Windows下Open GL的運(yùn)行機(jī)制
Open GL的作用機(jī)制是客戶(Client)/服務(wù)器(Sever)機(jī)制,即客戶(用Open GL繪制景物的應(yīng)用程序)向服務(wù)器(即Open GL內(nèi)核)發(fā)布Open GL命令,服務(wù)器則解釋這些命令。大多數(shù)情況下,客戶和服務(wù)器在同一機(jī)器上運(yùn)行。正是Open-GL的這種客戶/服務(wù)器機(jī)制,Open-GL可以十分方便地在網(wǎng)絡(luò)環(huán)境下使用。因此Windows下的Open GL是網(wǎng)絡(luò)透明的。
正像Windows的圖形設(shè)備接口(GDI)把圖形函數(shù)庫封裝在一個(gè)動(dòng)態(tài)鏈接庫(Windows下的GDI32.DLL)內(nèi)一樣,Open GL圖形庫也被封裝在一個(gè)動(dòng)態(tài)鏈接庫內(nèi)(OPENGL32.DLL)。受客戶應(yīng)用程序調(diào)用的Open GL函數(shù)都先在OPENGL32.DLL中處理,然后傳給服務(wù)器WINSRV.DLL。Open GL的命令再次得到處理并且直接傳給Win32的設(shè)備驅(qū)動(dòng)接口DDI,這樣就把經(jīng)過處理的圖形命令送給視頻顯示驅(qū)動(dòng)程序。圖7-2簡要說明了這一過程。
圖7-2 Open GL在Windows下的運(yùn)行機(jī)制
在三維圖形加速卡的GLINT圖形加速芯片的加速支持下,兩個(gè)附加的驅(qū)動(dòng)程序被加入這個(gè)過程中(圖7-3)。一個(gè)Open GL可安裝客戶驅(qū)動(dòng)程序(Installable Client Driver,ICD)被加在客戶這一邊,一個(gè)硬件指定DDI(hardware-specific DDI)被加在服務(wù)器這邊,這個(gè)驅(qū)動(dòng)程序與Wind32DDI是同一級(jí)別的。
圖7-3 在三維圖形加速下Open GL運(yùn)行機(jī)制
免責(zé)聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。