基于OpenGL的三維曲面數(shù)據(jù)場(chǎng)動(dòng)態(tài)顯示_第1頁(yè)
基于OpenGL的三維曲面數(shù)據(jù)場(chǎng)動(dòng)態(tài)顯示_第2頁(yè)
基于OpenGL的三維曲面數(shù)據(jù)場(chǎng)動(dòng)態(tài)顯示_第3頁(yè)
基于OpenGL的三維曲面數(shù)據(jù)場(chǎng)動(dòng)態(tài)顯示_第4頁(yè)
基于OpenGL的三維曲面數(shù)據(jù)場(chǎng)動(dòng)態(tài)顯示_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于OpenGL的三維直里數(shù)據(jù)場(chǎng)靜態(tài)表示摘要正在年夜數(shù)據(jù)量前提下,實(shí)時(shí)靜態(tài)表示三維直里較艱易,其閉鍵正在于前進(jìn)三維圖形數(shù)據(jù)處理戰(zhàn)圖形繪造速度。經(jīng)由過(guò)程對(duì)基于圖形財(cái)產(chǎn)標(biāo)準(zhǔn)penGL真現(xiàn)三維直里靜態(tài)表示的本理戰(zhàn)要發(fā)的會(huì)商,提出采取penGL的單緩存、表示列表妙技,年夜幅度前進(jìn)了圖形數(shù)據(jù)處理戰(zhàn)改革速度,保證了每幀數(shù)據(jù)圖形繪造的連續(xù)性戰(zhàn)完好性,成功真現(xiàn)了三維直里數(shù)據(jù)場(chǎng)實(shí)時(shí)靜態(tài)表示。閉鍵詞penGL三維直里靜態(tài)表示正在某三維數(shù)據(jù)場(chǎng)中,數(shù)據(jù)隨工夫的變化而發(fā)死變化,為直沒(méi)有俗觀沒(méi)有俗觀察數(shù)據(jù)隨工夫變化的態(tài)勢(shì),需對(duì)數(shù)據(jù)場(chǎng)的變化實(shí)時(shí)靜態(tài)表示。操做網(wǎng)格直里表示三維數(shù)據(jù)場(chǎng)是一種直沒(méi)有俗觀的要發(fā),但需經(jīng)過(guò)數(shù)據(jù)插值、投

2、影、直里拼接、消隱等處理前圓可繪造圖形,策繪量較年夜。正在數(shù)據(jù)量較年夜的情況下,實(shí)時(shí)靜態(tài)表示三維直里圖形較艱易,其閉鍵正在于前進(jìn)每幀圖形處理戰(zhàn)繪造改革速度,以保證每幀三維直里表示時(shí)的連接性戰(zhàn)完好性。penGL是機(jī)能出色的圖形處理工具,采取penGL單緩存戰(zhàn)繪圖操做予編譯妙技,較好打面了三維圖形數(shù)據(jù)處理戰(zhàn)繪圖改革速度標(biāo)題問(wèn)題。操做Visual+挪用penGL的三維圖形編程接心成功真現(xiàn)了年夜數(shù)據(jù)量的三維直里圖形的實(shí)時(shí)靜態(tài)表示。2.1基于penGL三維直里圖形表示本理penGL是自力于操做系統(tǒng)的開(kāi)放式三維圖形硬件接心。其主要成效是將三維直里經(jīng)由過(guò)程頂面序列或像素面舉止描摹,并舉止響應(yīng)的透視、光照、紋

3、理操做,最終轉(zhuǎn)換成幀緩存中的圖象數(shù)據(jù),操做該圖象數(shù)據(jù)舉止三維直里圖形的著色。三維直里圖形表示回納為以下幾個(gè)程序:1正在三維場(chǎng)景中創(chuàng)坐直里繪造的模型。選用插值要發(fā)、參數(shù)直里函數(shù),策繪直里操做面,舉止直里重構(gòu);2設(shè)置視面戰(zhàn)透視方法;3舉止消隱、光照、紋理、明暗處理;4繪造場(chǎng)景,輸出到屏幕窗心。圖1三維直里圖形表示底子流程2.2操做單緩存真現(xiàn)靜態(tài)表示本理三維直里靜態(tài)表示需要連續(xù)天繪造三維直里并表示場(chǎng)景,用沒(méi)有同的直里數(shù)據(jù)改革屏幕視窗。正在penGL中操做單緩存妙技,分撥兩個(gè)幀緩存區(qū),正在連續(xù)表示三維直里時(shí),一個(gè)幀緩沖區(qū)中的數(shù)據(jù)真止繪造直里命令的同時(shí),另外一個(gè)幀緩存區(qū)中的數(shù)據(jù)舉止圖形表示。當(dāng)前可睹視頻

4、緩存稱為前臺(tái)視頻緩存,沒(méi)有偏睹的正正在繪圖的視頻緩存稱為布景視頻緩存。當(dāng)布景視頻緩存中的數(shù)據(jù)要供表示時(shí),penGL便將它拷貝至前臺(tái)視頻緩存,表示硬件沒(méi)有竭天讀可睹視頻緩存中的內(nèi)容,并把結(jié)果表如今屏幕上。使用單緩存,每幀三維直里只正在繪造完成以后才表示出去,所以沒(méi)有俗觀察者可以看到每幀完好三維直里,而沒(méi)有是直里的繪造過(guò)程。操做單緩存真現(xiàn)三維直里靜態(tài)表示的程序以下:1設(shè)置penGL窗心表示屬性為單緩存機(jī)造:auxInitDisplayde(AUX_DUBLE|AUX_RGBA);2操做penGL底子繪圖命令繪造三維直里;3一幀直里繪圖竣過(guò)后緩存拷貝,切換緩存:auxSapBuffers();Sap

5、Buffers(glGeturrentD();2.3操做表示列表前進(jìn)程序運(yùn)轉(zhuǎn)從命表示列表是一組預(yù)先存儲(chǔ)起去留待當(dāng)前挪用的函數(shù)語(yǔ)句。挪用表示列表時(shí)便按次第真止其中的函數(shù)。表示列表將反復(fù)真止的繪圖操做以編譯好的命令方法舉止存儲(chǔ),圓案成命令的下速緩存,而沒(méi)有是靜態(tài)的數(shù)據(jù)庫(kù)緩存,所以可以劣化程序運(yùn)轉(zhuǎn)機(jī)能。真現(xiàn)戰(zhàn)挪用表示列表的要發(fā):1創(chuàng)坐列表:vidglNeList(Gluintlist,Glende);vidglBegin(Glenude);vidglEnd(vid);vidglEndList();2挪用列表:vidglallList(Gluintlist);正在操做Visual+的FAppizard

6、創(chuàng)坐使用程序框架后,天死了多個(gè)類,取penGL編程相閉的類是視圖類,主要的表示任務(wù)皆正在其中完成。3.1基于penGL繪圖的底子設(shè)置需要的編譯鏈接情況penGL的圖形編程接心包含的主要程序的視類頭文件中參取penGL頭文件分析:#inludeglgl.h#inludeglglu.h#inludeglglaux.h該局部設(shè)置繪圖所需的像素格局,inds下采取PIXELFRATDESRIPTR規(guī)劃設(shè)置像素格局,該規(guī)劃包含26個(gè)屬性疑息,包含了色彩位數(shù)、色彩形式、緩存的位數(shù)戰(zhàn)操做方法,和能可采取單緩存機(jī)造等。描摹表penGL使用程序的裝備描摹表D稱為著色描摹表,由它照顧inds正在窗心中繪造圖形。使

7、用程序必須正在繪圖之前挪用公用函數(shù)glreatentext()創(chuàng)坐自己的著色描摹表,挪用glakeurrent()使其當(dāng)前化,退出penGL時(shí)使著色表非當(dāng)前化。沒(méi)有俗觀察場(chǎng)景penGL一樣仄居用函數(shù)glFrustru()戰(zhàn)glVieprt()真現(xiàn)投影變動(dòng)戰(zhàn)視心變動(dòng)。glFrustru()定義了一個(gè)包容繪造工具的最年夜空間天域,即視景體,位于視景體以中的局部皆會(huì)被剪切失落;glVieprt()那么定義了一個(gè)繪造場(chǎng)景的矩形天域,即視心,用去把場(chǎng)景中的面映照到繪圖區(qū)。glFrustru(-1.0,1.0,-2.0,2.0,0.0,7.0);/視景體上、下、左、左、前、后的坐標(biāo)分別為-1.0,1.0,

8、-2.0,2.0,0.0,7.0;glVieprt(0,0,200,300);/視心區(qū)上、下、左、左坐標(biāo)分別為0,0,200,300;正在inds的V+編程中,局部窗心中的圖形繪造代碼皆正在視類的nDra成員函數(shù)中真現(xiàn),采取penGL繪造三維直里之前需要舉止需要的情況設(shè)置。gllearlr(1.0f,1.0f,1.0f,1.0f);/設(shè)置布風(fēng)光榮為紅色gllear(GL_LR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);/拂拭色彩緩存戰(zhàn)深度緩存gllr3f(1.0f,1.0f,1.0f);/設(shè)置繪圖色彩為紅色3.2創(chuàng)坐繪造三維直里的表示列表正在表示列表中定義用戶繪造三維直里

9、圖形所需數(shù)據(jù)和數(shù)據(jù)之間表示毗鄰方法。文中真例中表示列表包含三維直里圖形的數(shù)據(jù)面的表示列表;坐標(biāo)軸的表示列表;表示坐標(biāo)數(shù)據(jù)的表示列表。表示列表采取線段毗鄰的方法。3.3三維直里圖形靜態(tài)表示程序主框架正在視類中發(fā)死nhuitu()做為繪圖的主程序。三維直里圖形靜態(tài)表示子程序drasurbs()包含初初化,讀數(shù)據(jù)文件,數(shù)據(jù)插值,投影變動(dòng),消隱,繪圖表示列表設(shè)置坐標(biāo)軸繪造表示列表、三維直里繪造表示列表,欺壓繪圖操做,緩存拷貝,切換前后緩沖區(qū)等幾個(gè)主要局部。初初化程序yinit()中設(shè)置單緩存形式,是真現(xiàn)靜態(tài)表示的前提。drasurbs()中緩存拷貝auxSapBuffers()、切換緩存SapBuff

10、ers(glGeturrentD()、緩沖區(qū)的拂拭gllear(GL_LR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)是真現(xiàn)靜態(tài)表示的必沒(méi)有成少的操做。vidNurbsVie:nhuitu()HNDhnd=GetSafeHnd();HDhD=:GetD(hnd);glakeurrent(hD,hglr);/設(shè)置當(dāng)前著色表drasurbs();/靜態(tài)表示三維直里子程序glakeurrent(NULL,NULL);/著色表非當(dāng)前化SapBuffers(hD);/交換緩存vidNurbsVie:drasurbs()yinit();/初初化子程序jixu=20;/靜態(tài)表示幀數(shù)hil

11、e(jixu)readdata();/讀數(shù)據(jù)文件子程序interplatr();/數(shù)據(jù)插值子程序rthprjetin();/投影變動(dòng)子程序xiaying();/消隱子程序glPushatrix();gllr3f(0.0f,1.0f,1.0f);/色彩設(shè)置glLineidth(2.0);/線寬設(shè)置glNeList(axis_list,GL_PILE);/坐標(biāo)軸表示列表glEndList();glNeList(sufer_list,GL_PILE);/三維直里繪造表示列表glEndList();glallList(axis_list);glallList(sufer_list)glFlush();

12、/欺壓繪圖glPpatrix();auxSapBuffers();/緩存拷貝SapBuffers(glGeturrentD();/切換緩存gllear(GL_LR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);/為繪下幀直里拂拭緩沖區(qū)jixu-deley();/延時(shí)子程序vidNurbsVie:yinit()gllearlr(0.03,0.4,0.4,0.4);gllear(GL_LR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);auxInitDisplayde(AUX_DUBLE|AUX_RGBA);/設(shè)置成單緩存形式根據(jù)以上思維,操做penGL單緩存及表示列表妙技,基于某數(shù)據(jù)場(chǎng)數(shù)據(jù),開(kāi)拓了三維直里圖形靜態(tài)表示仿真系統(tǒng),該真例中視窗中三維直里圖形隨數(shù)據(jù)場(chǎng)的數(shù)據(jù)的改動(dòng)而靜態(tài)表示,圖2為程序運(yùn)轉(zhuǎn)中某一時(shí)分的表示結(jié)果。正在微機(jī)仄臺(tái)上,操做V6.0的penGL根據(jù)數(shù)據(jù)場(chǎng)的分布舉止三維直里的靜態(tài)表示是真正在可止的,特別采取單緩存及表示列表妙技可以獲得很好的三維直里天死速度,那種靜態(tài)表示妙技可以推行使

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論