freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl的屏幕對象拾取_本科畢業(yè)論文-全文預(yù)覽

2025-08-05 14:24 上一頁面

下一頁面
  

【正文】 中旋轉(zhuǎn)。w)。1e; 1(或 wamp。 Viewport{}表明當(dāng)前視口邊界,這可以用調(diào)用 glGetIntegerv(GL_VIEWPORT, GLint *viewport);獲得。 void gluPickMatrix(GLdouble x,Gldouble y,GLdouble width,GLdouble height,GLint viewport[4])。 拾取的建立幾乎與正規(guī)的選擇模式完全一樣,只有以下的主要區(qū)別:拾取通常由某個輸入設(shè)備觸發(fā)。 拾取 用選擇模式確定物體是否被拾取了, 要做到這一點,用一個與投影矩陣相關(guān)聯(lián)的拾取矩陣將繪制限制在視口的一個很小的區(qū)域里,通常是在光標(biāo)附近。用 name 取代名字棧棧頂?shù)哪莻€名字??梢杂脜?shù) GL_NAME_STACK_DEPTH 調(diào)用 glGetIntegerv()以獲取名字棧深度 。 清空名字棧。 /*恢復(fù)以前的轉(zhuǎn)型的狀態(tài) */ 在這個例子中,前兩個被繪制的物體有自己的名字,第三和第四個共用一個名字。 glLoadName(3)。 /*保存當(dāng)前的轉(zhuǎn)型的狀態(tài) */ glLoadName(1)。??刂泼钤试S你壓入名字( glPushName()),彈出名字( glPopName()),替換棧頂?shù)拿郑?glLoadName())。當(dāng)用 glRenderMode()退出選擇模式時,這條命令返回被寫入的記錄的個數(shù)(包括一條部分記錄如果有的話),清除名字棧,復(fù)位溢出標(biāo)識,重置棧指針。 每個命中記錄由四項組成,依次是: ( 1)當(dāng)命中出現(xiàn)時名字棧中的名字?jǐn)?shù); ( 2)至上次記錄的命中以來,被視見體裁剪后的圖元的所有頂點的窗口 Z 坐標(biāo)的最大; ( 3)被視見體裁剪后的圖元的所有頂點的窗口 Z 坐標(biāo)最小值; ( 4)本次命中時名字棧的內(nèi)容,最底元素最前。這個過程中,共用同樣名字的物體-例如:由多個圖元組成的物體-不生成多個命中記錄。負(fù)值意味著選擇或反饋數(shù)組溢出(overflowed)。在進(jìn)入選擇模式之前必須調(diào)用 glSelectBuffer()指定選擇數(shù)組。 參數(shù) buffer 是指向無符號整數(shù) (unsigned integer)數(shù)組的指針,數(shù)據(jù)就存在這個數(shù)組中, size 參數(shù)說明數(shù)組中最多能夠保存的值的個數(shù)。可以用這個例程決定哪個物體被畫在光標(biāo)附近了,這樣就能識別用戶拾取了哪個物體,也可以通過指定附加的裁剪面來界定一個選擇區(qū)域。確切的說,圖元清單是作為一個取整數(shù)值的名字 (integervalued names)數(shù)組和相關(guān)的數(shù)據(jù)-命中記錄 (hit record)-對應(yīng)名字棧 (name stack)的當(dāng)前內(nèi)容。 拾取過程如 下: 使用 OpenGL 的選擇機(jī)制時,首先把場景畫進(jìn)幀緩沖,然后進(jìn)入選擇模式并重新繪制這個場景。 OpenGL 正是設(shè)計用于支持這 些交互式應(yīng)用程序的。第 2 次繪圖為實際繪圖,所繪圖形為系統(tǒng)使用者看到的真實圖形。 在 OpenGL 繪圖模式下 ,通過 2( 1) 沒有采用OpenGL 選擇機(jī)制。 射線拾取方法 獲取屏幕坐標(biāo)并轉(zhuǎn)換成圖形系統(tǒng)的視口坐標(biāo),根據(jù)不同圖形API(應(yīng)用程序編程接口 )的實現(xiàn)給該點加上適當(dāng)?shù)纳疃戎?(如OpenGL 標(biāo) 準(zhǔn)的 深 度值 介 于01),反算出該拾取點的世界空間坐標(biāo),并由視點向此點引一條射線,在三維空間中對射線和物體進(jìn)行求交。確切的說,圖元清單是作為一個取整數(shù)值的名字 (integervalued names)數(shù)組和相關(guān)的數(shù)據(jù)-命中記錄 (hit record)-對應(yīng)名字棧 (name stack)的當(dāng)前內(nèi)容。 } 對于 ,前 3 個 RGB 值表示輸入的位置坐標(biāo);而第 4 個 Alpha 值用作存儲其他信息,暫時填入 ,后文將填充圖元的指針。 =float4(pos,)。 在 Vertex Shader 中,輸入某點的局部坐標(biāo),把坐標(biāo)的值編碼成一個顏色的 RGB 值后作為輸出顏色的 RGB 值,同時將輸入坐標(biāo)向量左乘世界矩 陣、觀察矩陣、投影矩陣后得到最終輸出的坐標(biāo)值。 圖 8 GPU 拾取流程 下面定義 Vertex Shader 的輸出內(nèi)容,定義了一個包括坐標(biāo)和顏色的結(jié)構(gòu) (struct)。整個算法分為在 CPU 上和在 GPU 上的兩部分。 在 GPU 上實現(xiàn)三維圖元拾取的方法有兩種,第一種方法與場景幾何無關(guān),第二種方法是場景幾 何依賴。 如圖 7 所示 圖 7 測試區(qū)中的軌跡 基于 GPU 的重繪式拾取技術(shù) 基本思路: 重繪式拾取法是在 OpenGL 繪圖模式下 ,通過 2 次繪圖來拾取并顯示物體。如果圖元進(jìn)入拾取 范圍 ,則必然在“測試區(qū)”中留下軌跡 , 重繪圖形對象的目的是為了恢復(fù)可能被“測試窗口”遮蔽的圖形對象。對于線狀圖元 , 比較常用的方法是通過計算點線距離來進(jìn)行拾取 , 這種方法簡單易懂 , 易于實現(xiàn)。在 0 到 1 的范圍內(nèi) , 參數(shù)坐標(biāo)的值越小 , 說明該點離視點越近。 圖 5 向量法判斷線段和包圍盒相對位置算法流程圖 根據(jù)拾取對象的不同 , 線段和相關(guān)對象求交的方法和過程存在差別。取 t t t3 中的最大值為 tmax,如果 tmax0 或 tmax1,則 AB 和包圍盒不相交 ,判斷結(jié)束; (3)根據(jù) tmax 值求出交點坐標(biāo),判斷交點是否在包圍盒上。 判斷線段和包圍盒的相對位置 實體的最大包圍盒是一個各表面平行于坐標(biāo)平面的六面體,其左下頂點的 x、 y、 z 坐標(biāo)值為實體所有頂點相應(yīng)坐標(biāo)值的最小值,其右上頂點的坐標(biāo)值為實體所有頂點相 應(yīng)坐標(biāo)值的最大值。如果 AB 和包圍盒相交 , 則求該實體和 AB交點的參數(shù)值 , 并將該實體標(biāo)記為選中對象。 12 3 拾取技術(shù) 拾取算法的研究可大致分為兩類 :一類是基于三維空間的射線拾取算法 ,代表算法就是基于 CPU的射線求交拾取技術(shù); 另一類是基于圖像空間的拾取算法 ,例如 :基于 GPU 的重繪式拾取技術(shù)。 利用 MFC ClassWizard 為 CGLView 類添加消息:帳 _CREATE、 wM_DESTROY、 m,t_SIZE 和刪 _TIMER 的響應(yīng)函數(shù),消息處理函數(shù)名依次為: OnCreate()、 onDestroy()、 OnSize()和 OnTimer()。 c.將這個返回的像素格式序號傳遞給函數(shù) SetPixelFormat(),使之設(shè)置成為當(dāng)前設(shè)備場境的像素格式。 首先需要在視圖類 CGLView 中添加一個成員函數(shù),函數(shù)原型如下: BOOL CGLView::SetupPixelFormat(CDC*pDC);設(shè)置像素格式并向視圖類 CGLView 中添加兩個成員變量: CDC* m_pDC; OpenGL 設(shè)備場境 HGLRC m_hRC; OpenGL 渲染場境在 Windows 中,使用結(jié)構(gòu) PIXELFO 腿ATDEscRIPTOR 來設(shè)置像素格式,并提供 ChoosePixelFormat()函數(shù)來選擇最為匹配的像素格式以及SetPixelFormat()函數(shù)來為設(shè)備場境設(shè)置像素格式。 到此,基于 OpenGL+ MFC 的開發(fā)環(huán)境就建立好。 ( 5)視 (CView) 視類從 CView 或 它的派生類派生。 邊框窗口用來管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協(xié)調(diào)半模式狀態(tài)(如上下文的幫助 (SHIFT+F1 模式 )和打印預(yù)覽)。對這些 9 類或者對象解釋如下 : ( 1)應(yīng)用程序 ( CWinApp) 應(yīng)用程序類派生于 CWinApp。于是, MFC建立了消息映射機(jī)制,以一種富有效率、便于使用的手段解決消息處理函數(shù)的動態(tài)約束問題。 虛擬函數(shù)和動態(tài)約束 MFC 以“ C++”為基礎(chǔ),自然支持虛擬函數(shù)和動態(tài)約束。CCmdTarget 通過封裝一些屬性和方法,提供了消息處理的架構(gòu)。這些類中 , 最重要的類是 CObject 和 CCmdTarget。 VC++產(chǎn)品 版本 與 MFC 版本 如下: 表格 1 VC++產(chǎn)品版本與 MFC 版本 MFC 特點 封裝 構(gòu)成 MFC 框架的是 MFC 類庫。 隨著 Visual Basic和 Visual Studio .NET 的發(fā)布,曾經(jīng)一度被微軟重點推薦的 MFC被 Visual Basic、 C、 Windows Forms 搶走了不少市場份額,但是 MFC 繼續(xù)在非托管軟件開發(fā)中占據(jù)重要地位。 MFC 是在 1992 年隨微軟的 Microsoft C/C++ 編譯器發(fā)布的,用于面向 16 位 Windows 的軟件開發(fā)。 主要過程:剪切測試、 Alpha 測試、模板測試和深度測試、寫入幀緩存 。 主要過程:視景裁剪、背面剔除 。 圖 1 Opengl 工作渲染流程圖 OpenGL 渲染管線的操作過程主要包括以下幾部分: 1)頂點變換 2)圖元組裝 3)圖元處理 4)片元處理 5)光柵化操作 頂點變換 這個階段主要是對輸入的頂點進(jìn)行逐個處理 ,這些頂點都包括很多屬性(如位置、顏色、法線和紋理坐標(biāo)等),經(jīng)過處理后,輸出是經(jīng)過變換后的頂點屬性及關(guān)聯(lián)信息。光柵階段根據(jù)幾何圖形、顏色和紋理數(shù)據(jù)實際創(chuàng)建彩色圖像。通常,頂點數(shù)據(jù)首先進(jìn)行轉(zhuǎn)換和光 照。 OpenGL 渲染管線過程 管線這個術(shù)語用于描述一種過程,它涉及兩個或更多個獨特的階段或步驟。 20xx 年 8 月初 Khronos 工作組在 Siggraph 20xx 大會上宣布 了 OpenGL 圖形接口規(guī)范, shader 語言和其他新增功能將再次未來開放 3D 接口發(fā)展指明方向。這樣,不但許多支持 OpenGL 的電腦 3D 游戲得到廣泛應(yīng) 用,而且許多在3D 圖形設(shè)計軟件也可以運用支持 OpenGL 標(biāo)準(zhǔn)的 3D 加速卡,大大提高其 3D 圖形的處理速度。 1995 年 OpenGL 的 版本面市,該版本較 性能 提高許多,并加入了一些新的功能。 當(dāng)然,我們可以在 OpenGL 上創(chuàng)建能夠提供這些特性的高級函數(shù)庫。反之,必須通過窗口系統(tǒng)控制所使用的特定硬件。 5 2 基于 OpenGL+ MFC 的建?;A(chǔ) OpenGL 概括 OpenGL(全寫 Open Graphics Library)是個定義了一個跨編程語言、跨平臺的編程 軟件 接口的規(guī)格,該接口包括了大約 250 個不同的函數(shù)(其中核心 OpenGL 大約包括 200 個函數(shù),另外還有50 個左右位于 OpenGL 工具函數(shù)庫),可以用這些函數(shù)指定物體和操作,創(chuàng)建交互性三維應(yīng)用程序。第三種是 OpenGL 自帶的拾取機(jī)制, 1992 年 7 月, SGI 公司發(fā)布了OpenGL 的 版本,隨后又與微軟公司共同開發(fā)了 Windows NT 版本的 OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型 3D 圖形處理軟件也可以在微機(jī)上運用 。到目前為止,拾取算法大致上可以分三種。隨著計算機(jī)軟硬件的快速發(fā)展,人們對實時系統(tǒng)的交互的實時性要求也越發(fā)苛刻 ,而且三維場景復(fù)雜度也日益提高,這就要求系統(tǒng)提供快速的拾取操作 。其次,必須對“拾取目標(biāo)”進(jìn)行定義。 puter application。這種物體拾取方法非常簡單 , 不需要寫很多 代碼 。 OpenGL 為了解決拾取問題,提供了一種基于名字堆棧和命中記錄的選擇機(jī)制。 :任務(wù)書、開題報告、外文譯文、譯文原文(復(fù)印件)。有權(quán)將論文(設(shè)計)用于非贏利目的的少量復(fù)制并允許論文(設(shè)計)進(jìn)入學(xué)校圖書館被查閱。 論文題目: 基 于 OpenGL 的屏幕對象拾取 II 畢業(yè)論文(設(shè)計)原創(chuàng)性聲明 本人所呈交的畢業(yè)論文(設(shè)計) 是我在導(dǎo)師的指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。 作者簽名: 日期: 畢業(yè)論文(設(shè)計)授權(quán)使用說明 本論文(設(shè)計)作者完全了解 **學(xué)院有關(guān)保留、使用畢業(yè)論文(設(shè)計)的規(guī)定,學(xué)校有權(quán)保留論文(設(shè)計)并向相關(guān)部門送交論文(設(shè)計)的電子版和紙質(zhì)版。 作者簽名: 指導(dǎo)教師簽名: 日期: 日期: III 注 意 事 項 (論文)的內(nèi) 容包括: 1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作) 2)原創(chuàng)性聲明 3)中文摘要( 300 字左右)、關(guān)鍵詞 4)外文摘要、關(guān)鍵詞 5)目次頁(附件不統(tǒng)一編入) 6)論文主體部分:引言(或緒論)、正文、結(jié)論 7)參考文獻(xiàn) 8)致謝 9)附錄(對論文支持必要時) :理工類設(shè)計(論文)正文字?jǐn)?shù)不少于 1 萬字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于 萬字。有時還需要獲取物體上點的空 間坐標(biāo)或測量物體的幾何特性如距離、角度、半徑等,這些操作都需要以拾取作為實現(xiàn)的基礎(chǔ)。一旦拾取成功,就以記錄的形式返回與拾取物體相關(guān)的信息 , 并生成一個記錄表示一個物體被命中。 關(guān) 鍵
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1