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

正文內(nèi)容

基于opengl的虛擬場景實現(xiàn)技術(shù)的研究與實現(xiàn)(編輯修改稿)

2024-12-18 15:13 本頁面
 

【文章內(nèi)容簡介】 OpenGL 需要的動態(tài)鏈接庫 OpenGL 需要的頭文件 OpenGL 指的是開放圖形程序庫 (Open Graphics Library),是由 Silicon Graphics Incorporated(SGI 公司 )為其圖形工作站 IRIS 開發(fā)的一種快速的、高質(zhì)量的 3D 圖形軟件,是近幾年 發(fā)展起來的一個性能卓越的三維圖形平臺。它的獨立性、開放性、前瞻性和跨平臺性。它被集成到 Unix、 Windows 20 Windows XP 等窗口操作系統(tǒng)中。 OpenGL 集成了所有幾何建模、圖形變換、光源設(shè)置、材質(zhì)設(shè)置、紋理映射、運動模糊、像素操作、融合等復(fù)雜的計算機圖形算法。開發(fā)人員可以利用這些函數(shù)對整個三維圖形輕松進行渲染,這些都為三維圖形開發(fā)提供了良好的便利條件。 在 VC++ 開發(fā)環(huán)境下 OpenGL 的編輯框架: 1) 構(gòu)造 OpenGL 窗口風(fēng)格; 2) 設(shè)置支持 OpenGL 的像素格式; 第 6 頁 共 28 頁 3) 創(chuàng)建 OpenGL 的繪圖 描述表,并將其設(shè)置為當(dāng)前繪圖描述表; 4) 初始化 OpenGL 的繪制環(huán)境,例如光照模型、顏色和深度緩沖區(qū)的設(shè)置; 5) 添加 Windows 消息處理函數(shù),例如鼠標、窗口、鍵盤消息,在這些消息處理函數(shù)中,就包含了 OpenGL 的繪制命令; 6) 在應(yīng)用程序結(jié)束并撤消視窗時,刪除繪制描述表。 最后,應(yīng)把 和 3 個靜態(tài)庫加入到應(yīng)用程序中,它們可以支持開發(fā)者對 100 多個 OpenGL 圖形函數(shù)的調(diào)用 [7]。 構(gòu)建系統(tǒng)的硬件環(huán)境 本系統(tǒng)建立所需的硬件平臺是 : CPU: Intel( R) Celeron( R) 內(nèi)存: 256M 顯卡: Geforce4 MX 440 本章小結(jié) 本章先對三維虛擬場景漫游實驗系統(tǒng)的總體功能進行了簡單的描述,然后講述了系統(tǒng)的模塊劃分結(jié)構(gòu),最后描述了系統(tǒng)的開發(fā)環(huán)境。 3 虛擬場景漫游實驗 系統(tǒng) 的實現(xiàn) 筆者使用 VC++ 結(jié)合 OpenGL 技術(shù)實現(xiàn)了虛擬場景漫游實驗系統(tǒng)。本章詳細 說明了 系統(tǒng)中 OpenGL 程序基本框架的建立,天空構(gòu)建、地形的模擬,汽車、飛機模型的繪制,場景中樹林的生成,最后描述了場景中的漫游控制的決方案和具體實現(xiàn)過程 。 OpenGL程序基本框 架的建立 虛擬場景漫游實驗系統(tǒng)需要建立 OpenGL 繪制窗口,本節(jié)說明了建立 OpenGL 窗口的準備工作和 OpenGL 窗口建立的詳細過程。 創(chuàng)建 OpenGL 的渲染上下文 OpenGL 的繪圖方式與 Windows 的一般的繪圖方式是不同的,其區(qū)別主要表現(xiàn)在以下三個方面: (1) Windows 采用的是 GDI 繪圖; (2) OpenGL 采用的是渲染上下文 RC( Render Context,又稱渲染描述表)繪圖; (3) OpenGL 使用的是特殊的像素格式。 在 Windows 中使用 GDI 繪圖時必須指定在哪個設(shè)備上下文( Device Context,又稱設(shè)備描述表)中繪制,同樣地,在使用 OpenGL 函數(shù)時也必須指定一個所謂的渲染上下文。正如設(shè)備上下文 DC要存儲 GDI 的繪制環(huán)境信息如筆、刷和字體等,渲染上下文 RC 也必須存儲 OpenGL 所需的渲染信息 , 如像素格式等。 渲染上下文主要由以下六個 wgl函數(shù)來管理 1. HGLRC wglCreateContext(HDC hdc) 第 7 頁 共 28 頁 該函數(shù)用來創(chuàng)建一個 OpenGL 可用的渲染上下文 RC。 Hdc 必須是一個合法的支持至少16 色的屏幕設(shè)備描述表 DC 或內(nèi)存設(shè)備描述表的句柄。該函數(shù)在調(diào)用之前,設(shè)備描述 表必須設(shè)置好適當(dāng)?shù)南袼馗袷?。成功?chuàng)建渲染上下文之后, hdc 可以被釋放或刪除。函數(shù)返回NULL 值表示失敗,否則返回值為渲染上下文的句柄。 2. BOOL wglDeleteContext(HGLRC hglrc) 該函數(shù)刪除一個 RC。一般應(yīng)用程序在刪除 RC 之前,應(yīng)使它成為非現(xiàn)行 RC。不過,刪除一個現(xiàn)行 RC 也是可以的。此時, OpenGL 系統(tǒng)沖掉等待的繪圖命令并使之成為非現(xiàn)行 RC,然后刪除之。注意在試圖刪除一個屬于別的線程的 RC時會導(dǎo)致失敗。 3. HGLRC wglGetCurrentContext(void) 該函數(shù)返回 線程的現(xiàn)行 RC,如果線程無現(xiàn)行 RC 則返回 NULL。 4. HDC wglGetCurrentDC(void) 該函數(shù)返回與線程現(xiàn)行 RC關(guān)聯(lián)的 DC,如果線程無現(xiàn)行 RC 則返回 NULL。 5. BOOL wglMakeCurrent(HDC hdc, HGLRC hglrc) 該函數(shù)把 hdc 和 hglrc 關(guān)聯(lián)起來,并使 hglrc 成為調(diào)用線程的現(xiàn)行 RC。如果傳給 hglrc的值為 NULL,則函數(shù)解除關(guān)聯(lián),并置線程的現(xiàn)行 RC 為非現(xiàn)行 RC,此時忽略 hdc 參數(shù)。傳給該函數(shù)的 hdc 可以不是調(diào)用 wglCreateContext 時使用的值,但 是,它們所關(guān)聯(lián)的設(shè)備必須相同并且擁有相同的像素格式。注意,如果 hglrc 是另一個線程的現(xiàn)行 RC,則調(diào)用失敗。 6. BOOL wglUseFontBitmaps(HDC hdc, DWORD dwFirst, DWORD dwCount, DWORD dwBase) 該函數(shù)使用 hdc 的當(dāng)前字體,創(chuàng)建一系列指定范圍字符的顯示表??梢岳眠@些顯示表在 OpenGL 窗口畫 GDI 文本。如果 OpenGL 窗口是雙緩沖的,那么這是往后緩沖區(qū)中畫 GDI 文本的唯一途徑。 在使用單個 RC 的應(yīng)用程序中,在相應(yīng) WM_CREATE 消息時創(chuàng)建 RC,當(dāng) WM_CLOSE 或WM_DESTROY 到來時再刪除它。在使用 OpenGL 命令往窗口中繪圖之前,必須先建立一個 RC,并使之成為現(xiàn)行 RC。 OpenGL 命令無需提供 RC,它將自動使用現(xiàn)行 RC。若無現(xiàn)行 RC, OpenGL將簡單地忽略所有的繪圖命令。 OpenGL 的像素格式設(shè)置 首先獲取需要繪圖的設(shè)備環(huán)境( DC) ,選擇合適的像素格式 并為該設(shè)備環(huán)境設(shè)置像素格式, 然后 創(chuàng)建基于該設(shè)備環(huán)境的 OpenGL 的 RC 渲染上下文 設(shè)備。最后, 綁定 DC 和 RC, 初始化 OpenGL 繪制場景及狀態(tài)設(shè)置 , PIXELFORMATDESCRIPTOR 是像素結(jié)構(gòu)體。 int pixelformat。 PIXELFORMATDESCRIPTOR pfd={ sizeof(PIXELFORMATDESCRIPTOR), // pfd 結(jié)構(gòu)的大小 1, // 版本號 PFD_DRAW_TO_WINDOW | // 支持在窗口中繪圖 第 8 頁 共 28 頁 PFD_SUPPORT_OPENGL | // 支持 OpenGL PFD_DOUBLEBUFFER, //雙緩存模式 PFD_TYPE_RGBA, //RGBA 顏色模式 16, // 24 位顏色深度 0, 0, 0, 0, 0, 0, //忽略顏色位 0, // 沒有非透明度緩存 0, // 忽略移位位 0, // 無累加緩存 0, 0, 0, 0, // 忽略累加位 16, //32 位深度緩存 0, // 無模板緩存 0, // 無輔助緩存 PFD_MAIN_PLANE, //主層 0, //保留 0,0,0 //忽略層 ,可見性和損毀掩模 }。 m_pDc=GetDC()。//得到環(huán)境設(shè)備句柄 int iFormat=ChoosePixelFormat(m_pDCm_hDC,amp。pfd)。 //設(shè)置象素格式 SetPixelFormat(m_pDCm_hDC,iFormat,amp。pfd)。 //設(shè)置象素 m_hGlrc = wglCreateContext(m_pDCm_hDC)。 //創(chuàng)建渲染上下文 wglMakeCurrent(m_hDCm_hDC,m_hGlrc)。 //設(shè)置一個線程的當(dāng)前繪圖描述表 這里首先對描述像素存儲格式的 PIXELFORMATDESCRIPTOR 結(jié)構(gòu)變量進行了填充,在得到設(shè)備環(huán)境句柄后調(diào)用 ChoosePixelFormat()和 SetPixelFormat()函數(shù)以返回并設(shè)置最佳匹配的像素格式。最后調(diào)用 wglCreateContext()創(chuàng)建一個渲染上下文 RC 并將其作為參數(shù)通過 wglMakeCurrent()來建立一個當(dāng)前的繪圖描述表,并在繪制完畢后(通常在WM_DESTORY 消息發(fā)出后執(zhí)行)將其釋放: if (m_hGlrc! = null) wglDeleteContext(m_hGlrc)。 //釋放 RC OpenGL 窗口的建立流程 如 果 在 窗 口 系 統(tǒng) 中 使 用 OpenGL 則 必 須 給 窗 口 加 上 WS_CLIPSIBLINGS 和WS_CLIPCHILDREN 兩個屬性,否則只能得到黑色的屏幕。 OpenGL 窗口的建立需要從窗口句柄中獲取設(shè)備描述表( Device Context),然后創(chuàng)建 OpenGL繪圖所需要的渲染上下文( Render Context)。圖 2是建立 OpenGL 窗口的 流程示意圖 。 第 9 頁 共 28 頁 圖 2 OpenGL 窗口的建立流程圖 1. 初 始化并設(shè)置當(dāng)前著色描述表 g_hDC=GetDC(g_hWnd)。//根據(jù)窗口句柄獲取設(shè)備描述表 if(!bSetupPixelFormat(g_hDC))//在 DC設(shè)備上設(shè)置匹配的象素格式 PostQuitMessage(0)。 g_hRC = wglCreateContext(g_hDC)。//用 wglCreateContext 函數(shù)創(chuàng)建一個 RC wglMakeCurrent(g_hDC, g_hRC)。//用 wglMakeCurrent 函數(shù)把它作為當(dāng)前線程的 RC 2. 初始化 OpenGL 場景 glClearDepth()。//定義深度緩沖區(qū)的清楚值 glEnable(GL_TEXTURE_2D)。//開啟 2D 紋理映射 第 10 頁 共 28 頁 glEnable(GL_DEPTH_TEST)。//啟用深度測試 glEnable(GL_LIGHT1); //使用 1 號光源 3. 處理視口變換和設(shè)置圖形顯示模式 通過視口變換在實際屏幕窗口中定義一個觀察或顯示虛擬場景的視口,由于 Windows窗口大小發(fā)生變化時, OpenGL 不會自動調(diào)整視口,須用 SizeOpenGLScreen ()函數(shù)進行處理。另外,為了使三維物體變換為二維圖形顯示出來,必須 設(shè)置投影變換圖形顯示模式。最常用、最基本的投影模式為:正射投影( Orthographic Projection)和透視投影( Perspective Projection) 。 glViewport(0,0,width,height)。//重置當(dāng)前的視口( Viewport) glMatrixMode(GL_PROJECTION)。//選擇投影矩陣 glLoadIdentity()。//重置投影矩陣 gluPerspective(,(GLfloat)width/(GLfloat)height, 4 ,)。 //計算窗口的外觀比例 glMatrixMode(GL_MODELVIEW)。//選擇模型觀察矩陣 glLoadIdentity()。//重置模型觀察矩陣 4. 程序退出處理 當(dāng)處理完畢后,必須釋放著色描述表并刪除與之相連的 DC對象。程序?qū)崿F(xiàn)如下: wglMakeCurrent(NULL,NULL)。//釋放 DC和 RC的關(guān)聯(lián) wglDeleteContext(g_hRC)}。//釋放渲染描述表 ReleaseDC(g_hWnd,g_hDC)。//釋放上下文設(shè)備 UnregisterClass(GameTutorials,g_hInstance)。//注銷窗口類 PostQuitMessage (0)。//向系統(tǒng)發(fā)出退出消息 三維虛擬 場景漫游實驗系統(tǒng)的模型的建立 虛擬場景漫游實驗系統(tǒng)的模型的建立包括了天空的模擬、地形的模擬、場景中雷達模型的建立、場景中汽車和飛機模型的構(gòu)建、場景中樹林的生成。 天空的模擬 天 空 是由一個長方體 (稱為天空盒 ),在它的各個面上貼有表示天的圖片形成的 (如圖二、圖三所示) 。用于天空背景的圖片有特殊要求。 4 面圖的邊與頂圖的邊相連, 4 面圖前后相連。圖片大小為 2 的 N 次方 (3 6 128...)。圖 3是立體天空盒子的構(gòu)造示意圖 ,在場景中繪制的天空圖如圖 4所示。 第 11 頁 共 28 頁 圖 3 立體天空盒展開的平面圖 圖 4 繪制的立體天空的效果圖 以下是實現(xiàn)構(gòu)造立體天空盒子的關(guān)鍵代碼: LoadT8(images/,g
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1