資源描述:
《基于vc++的opengl編程講座》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、基于VC++的OpenGL編程講座之(一)-----概述[轉(zhuǎn)帖]作者:劉濤出處:天極網(wǎng)隨著計(jì)算機(jī)多媒體技術(shù)、可視化技術(shù)及圖形學(xué)技術(shù)的發(fā)展,我們可以使用計(jì)算機(jī)來(lái)精確地再現(xiàn)現(xiàn)實(shí)世界中的絢麗多彩的三維物體,并充分發(fā)揮自身的創(chuàng)造性思維,通過(guò)人機(jī)交互來(lái)模擬、改造現(xiàn)實(shí)世界,這就是目前最為時(shí)髦的虛擬現(xiàn)實(shí)技術(shù)。通過(guò)這種技術(shù),建筑工程師可以直接設(shè)計(jì)出美觀的樓房模型;軍事指揮員可以模擬戰(zhàn)場(chǎng)進(jìn)行軍事推演,網(wǎng)民可以足不出戶游覽故宮博物館等名勝古跡等。而虛擬現(xiàn)實(shí)技術(shù)最重要的一部分內(nèi)容就是三維圖形編程。當(dāng)前,三維圖形編程工具中最為突出的是SGI公司的OpenGL(OpenGraphicsLan
2、guage,開(kāi)放式的圖形語(yǔ)言),它已經(jīng)成為一個(gè)工業(yè)標(biāo)準(zhǔn)的計(jì)算機(jī)三維圖形軟件開(kāi)發(fā)接口,并廣泛應(yīng)用于游戲開(kāi)發(fā)、建筑、產(chǎn)品設(shè)計(jì)、醫(yī)學(xué)、地球科學(xué)、流體力學(xué)等領(lǐng)域。值得一提的是,雖然微軟有自己的三維編程開(kāi)發(fā)工具DirectX,但它也提供OpenGL圖形標(biāo)準(zhǔn),因此,OpenGL可以在微機(jī)中廣泛應(yīng)用?! ∧壳?,OpenGL在國(guó)內(nèi)外都掀起了熱潮,但國(guó)內(nèi)對(duì)這一領(lǐng)域介紹的資料并不是很多,特別是有志于在圖形圖像方面進(jìn)行深入研究的讀者朋友,常??嘤诓徽莆誒penGL編程接口技術(shù),無(wú)法向縱深領(lǐng)域擴(kuò)展。為了開(kāi)啟三維圖形編程這扇神秘大門,本講座在結(jié)合OpenGL有關(guān)理論知識(shí)的基礎(chǔ)上,著重介紹Vi
3、sualC++6.0開(kāi)發(fā)環(huán)境中的編程實(shí)現(xiàn),由于水平有限,本講座可能無(wú)法面面俱到,存在一些疏漏,但相信它可以將開(kāi)啟"神秘大門"的鑰匙交給讀者朋友們。 一、OpenGL的特點(diǎn)及功能 OpenGL是用于開(kāi)發(fā)簡(jiǎn)捷的交互式二維和三維圖形應(yīng)用程序的最佳環(huán)境,任何高性能的圖形應(yīng)用程序,從3D動(dòng)畫、CAD輔助設(shè)計(jì)到可視化訪真,都可以利用OpenGL高質(zhì)量、高性能的特點(diǎn)。OpenGL自1992年出現(xiàn)以來(lái),逐漸發(fā)展完善,已成為一個(gè)唯一開(kāi)放的,獨(dú)立于應(yīng)用平臺(tái)的圖形標(biāo)準(zhǔn),一個(gè)典型的OpenGL應(yīng)用程序可以在任何平臺(tái)上運(yùn)行--只需要使用目標(biāo)系統(tǒng)的OpenGL庫(kù)重新編譯一下。 OpenG
4、L非常接近硬件,是一個(gè)圖形與硬件的接口,包括了100多個(gè)圖形函數(shù)用來(lái)建立三維模型和進(jìn)行三維實(shí)時(shí)交互。OpenGL強(qiáng)有力的圖形函數(shù)不要求開(kāi)發(fā)人員把三維物體模型的數(shù)據(jù)寫成固定的數(shù)據(jù)格式,也不要求開(kāi)發(fā)人員編寫矩陣變換、外部設(shè)備訪問(wèn)等函數(shù),大大地簡(jiǎn)化了編寫三維圖形的程序。例如: 1)?OpenGL提供一系列的三維圖形單元(圖元)供開(kāi)發(fā)者調(diào)用?! ?)?OpenGL提供一系列的圖形變換函數(shù)。? 3)?OpenGL提供一系列的外部設(shè)備訪問(wèn)函數(shù),使開(kāi)發(fā)者可以方便地訪問(wèn)鼠標(biāo)、鍵盤、空間球、數(shù)據(jù)手套等外部設(shè)備?! ∮捎谖④浽赪indows中包含了OpenGL,所以O(shè)penGL可以
5、與Visual?C++緊密接合,簡(jiǎn)單快捷地實(shí)現(xiàn)有關(guān)計(jì)算和圖形算法,并保證算法的正確性和可靠性。簡(jiǎn)單地說(shuō),OpenGL具有建模、變換、色彩處理、光線處理、紋理影射、圖像處理、動(dòng)畫及物體運(yùn)動(dòng)模糊等功能: 1、建?! penGL圖形庫(kù)除了提供基本的點(diǎn)、線、多邊形的繪制函數(shù)外,還提供了復(fù)雜的三維物體,如球、錐、多面體、茶壺以及復(fù)雜曲線和曲面(例如Bezier、Nurbs等曲線或曲面)的繪制函數(shù)?! ?、變換 OpenGL圖形庫(kù)的變換包括基本變換和投影變換?;咀儞Q有平移、旋轉(zhuǎn)、變比、鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投影兩種變換?! ?、顏色模式設(shè)
6、置 OpenGL顏色模式有兩種,即RGBA模式和顏色索引(Color?Index)?! ?、光照和材質(zhì)設(shè)置 OpenGL光有輻射光(Emitted?Light)、環(huán)境光(Ambient?Light)、漫反射光(Diffuse?Light)和鏡面光(Specular?Light)。材質(zhì)是用光反射率來(lái)表示。客觀世界中的物體最終反映到人眼的顏色是光的紅綠藍(lán)分量與材質(zhì)紅綠藍(lán)分量的反射率相乘后形成的顏色?! ?、紋理映射(Texture?Mapping) 利用OpenGL紋理映射功能可以十分逼真地表達(dá)物體表面細(xì)節(jié)?! ?、位圖顯示和圖象增強(qiáng) OpenGL的圖象功能除了
7、基本的拷貝和像素讀寫外,還提供融合(Blending)、反走樣(Antialiasing)和霧(fog)的特殊圖象效果處理。以上三條可是被仿真物更具真實(shí)感,增強(qiáng)圖形顯示的效果。 7、雙緩存動(dòng)畫(Double?Buffering) OpenGL使用了前臺(tái)緩存和后臺(tái)緩存交替顯示場(chǎng)景(Scene)技術(shù),簡(jiǎn)而言之,后臺(tái)緩存計(jì)算場(chǎng)景、生成畫面,前臺(tái)緩存顯示后臺(tái)緩存已畫好的畫面?! ?、特殊效果 利用OpenGL還能實(shí)現(xiàn)深度暗示(Depth?Cue)、運(yùn)動(dòng)模糊(Motion?Blur)等特殊效果。運(yùn)動(dòng)模糊的繪圖方式(motion-blured),模擬物體運(yùn)動(dòng)時(shí)人眼觀察