資源描述:
《如何在vc++中用mfc進行opengl編程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、萬方數(shù)據(jù)第21卷第8期計算機應(yīng)用V01.21.No.82001年8月C0mputerApplic砒ionsAug.,2001———————————————————————————————————————————————————————————一一_文章編號:1001—9081(2001)08—0087一03如何在VC++中用MFC進行OpenGL編程胡偉,王弘(華中科技大學(xué)動力工程系,湖北武漢430074)摘要:介紹了OpenGL的基本概念及其基本程序結(jié)構(gòu),通過對用標準C和用MFC這兩種方法進行OpenGL編程的相通點的分析
2、,詳細敘述了如何在VC++中用MFC編寫openGL程序的一般過程。關(guān)鍵詞:OpenGL;MFC;設(shè)備描述表(DC);繪制描述表(RC)中圖分類號:哪!1.73文獻標識碼:A1簡介隨著三維圖形的應(yīng)用越來越廣泛,計算機圖形學(xué)的發(fā)展也越來越迅速,各種圖形應(yīng)用軟件也就隨之應(yīng)運而生。OpenGL(()penGI印Ilicubrary,開放性圖形庫)是目前比較完善的三維圖形標準,已被廣泛的用于可視化技術(shù)、實體造型、c^D/cAM、模擬仿真等諸多領(lǐng)域。0penGL作為一種硬件圖形的軟件接口,其優(yōu)點是作為一個獨立的工作平臺,獨立于硬件設(shè)備
3、、窗口系統(tǒng)和操作系統(tǒng),用它編寫的軟件可以在u面x、windows950sR2、Windows98/NT/2000等系統(tǒng)間移植。openGL編程類似于c編程,實際接口就是c,所以市面上的很多有關(guān)()penGL的書中的程序都是使用標準c(或是WiIl32ConsoleAppuc撕0n)調(diào)用0penGL函數(shù)實現(xiàn)的。這樣做,只是為了使讀者盡快地掌握OpenGL的基本操作。但是,0pencL僅僅是一個包含120多個圖形函數(shù)的圖形庫,并沒有窗口函數(shù)(盡管0penGL的輔助庫提供了一些窗口和事件管理的函數(shù),但是這些函數(shù)在實際應(yīng)用中是遠遠不
4、夠的。),它缺乏面向?qū)ο竽芰?,不符合當前流行的軟件設(shè)計思想。因此我們需要借助一個“窗口”系統(tǒng)來完成0p朗GL三維圖形的制作。Vc++中的MFC包含了強大的基于Wi抵的應(yīng)用框架,提供了豐富的窗口和事件管理函數(shù),已經(jīng)成為當前一種比較流行的工作平臺。于是我們可以使用Ⅻ陀調(diào)用Ope以L函數(shù)來實現(xiàn)三維圖形的制作。2OpenGL的基本程序結(jié)構(gòu)2.1定義窗口即定義所制作的三維圖形在Windows屏幕坐標系中的顯示位置,定義所顯示圖形窗口的大小、窗口的性質(zhì)。2.2初始化包括初始化一些基本操作,如清緩存區(qū)(bu&r)、定義光照模型、定義紋理映
5、射、安裝顯示列表、定義霧等基本操作的初始化狀態(tài)、設(shè)置三維視景體、定義視口??傊?,是為下一步的0penGL圖形顯示作準備,初始化0penGL的狀態(tài)變量,使顯示三維0penGL圖形更方便,節(jié)省顯示圖形的時間。2.3繪制和顯示圖形按照應(yīng)用的具體要求,繪制和顯示三維圖形包括建立三維模型、設(shè)置物體在立體空間的運動軌跡、變更0penGL的狀態(tài)變量、協(xié)調(diào)合理地結(jié)合運用0penGL各基本操作、實現(xiàn)完美的三維圖形顯示。例1.1用一個簡單的例子(標準c編寫)來說明0penGL的程序結(jié)構(gòu)。例1.1OpenGL例程姍ple.e#include<衍n
6、daw.h>#include#indude}}indude#irlclllde<吼dio.h>voidⅡlyi撕t(void);void(:AIIBACK硼yReshape(GL8izeiw,Glsizeih);voidcAIIBAcKdisplay(void);/*Ini6alize枷出IsingforRGBAn10de,incl礎(chǔ)ngalpllablendiTIg,him,鋤dlinewi拙.*/砌dnlyiIIit(void){daearColor(O.O,O.
7、0,O.O,0.O);//將窗口清為黑色)/*disp:Iay()幽n幅蚰octahedlDnwitllalarge8lphavalue,1.O.*/void(:AIIBACKdi8play(void){出Qear(GLCOLOR_BImR—Brr);//將當前顏色緩存清為窗口的顏色西Colo—f(O.2,0.6,1.0,1.0);//設(shè)置顏色蝴ef(60.O.1.0,1.O,1.0);//設(shè)置坐標a政ⅣiIeCube(1.0);//繪制立方體棚ush();//強制繪圖完成1收稿日期:2001一02—28作者簡介:胡偉(19
8、76一),男,碩士研究生,主要研究方向:CAD、圖形學(xué)應(yīng)用;王弘(1948一).男,副教授,主要研究方向:cJMs系統(tǒng)規(guī)劃及應(yīng)用研究.萬方數(shù)據(jù)88計算機應(yīng)用2001年———————————————————————————~——————————————————————————————————