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

正文內(nèi)容

基于opengl的臺(tái)球游戲設(shè)計(jì)(編輯修改稿)

2024-12-14 00:54 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 元都要進(jìn)行一系列的逐個(gè)片元操作,這樣最后的象素值 BZ 送入幀緩沖器實(shí)現(xiàn)圖形的顯示 。 OpenGL 圖形操作步驟 在上面說(shuō)明了 OpenGL 的基本工作流程,根據(jù)這個(gè)流程可以歸納出在 OpenGL 中進(jìn)行主要的圖形操作直至在計(jì)算機(jī)屏幕上渲染繪制出三維圖形景觀的基本步驟: ( 1) 建立景物模型 根據(jù)基本圖形單元建立景物模型,并且對(duì)所建立的模型進(jìn)行數(shù)學(xué)描述( OpenGL 中把:點(diǎn)、線、多邊形、圖像和位圖都作為基本圖形單元)。 ( 2) 景物位置設(shè)置 把景物模型放在三維空間中的合適的位置,并且設(shè)置視點(diǎn)( viewpoint)以觀察所感興趣的景觀。 ( 3) 物體顏色,紋理處理 計(jì)算模型中所有物體的色彩,其中的色彩根據(jù)應(yīng)用要求來(lái)確定,同時(shí)確定關(guān)照條件、紋理粘貼方式等。 ( 4) 景物模型光柵化 把景物模型的數(shù)學(xué)描述以及色彩信息轉(zhuǎn)換至計(jì)算機(jī)屏幕上的像素,這個(gè)過(guò)程也就是光柵化( rasterization)。 在這些步驟的執(zhí)行過(guò)程中, OpenGL 可能執(zhí)行其他的一些操作,例如自動(dòng)消隱處理 10 等。另外景物光柵化之后被送入幀緩沖器之前可以根據(jù)需要對(duì)象素?cái)?shù)據(jù)進(jìn)行操作。 OpenGL 游戲開(kāi)發(fā)需要的 技術(shù) 圖形變換 通過(guò)圖形變換,可由簡(jiǎn)單圖形生成復(fù)雜圖形,可用二維圖形表示三維形體,甚至可以對(duì)靜態(tài)圖形經(jīng)過(guò)快速變換而獲得圖形的動(dòng)態(tài)顯示效果。圖形變換一般是指對(duì)圖形的幾何信息經(jīng)過(guò)幾何變換 后產(chǎn)生的新圖形.主要包括幾何變換、裁減變換、投影變換和視區(qū)變換 。創(chuàng)建好幾何模型后,只有放在三維空間中的適當(dāng)位置。 并選擇適當(dāng)?shù)囊朁c(diǎn)及觀察方向才能更有利于用戶的觀看。為了觀察場(chǎng)景中的模型,需要進(jìn)行視景轉(zhuǎn)換,包括視點(diǎn)轉(zhuǎn)換、模型轉(zhuǎn)換、投影轉(zhuǎn)換和視口轉(zhuǎn)換。 OpenGL 將物體的各個(gè)頂點(diǎn)通過(guò)各種變換矩陣的作用影射到屏幕上。通過(guò)模型變換可以改變物體的位置和尺寸, 相應(yīng)的函數(shù)有g(shù)lTranlate*(), glRotate*(), glScale*(),這三條命令相當(dāng)于生成平移、旋轉(zhuǎn)和縮放的矩陣,并以此矩陣作為參數(shù),然后調(diào)用 glMuhiMatrix*()。視點(diǎn)變換是改變視點(diǎn)的位置和方向,應(yīng)用程序庫(kù)函數(shù) gluLookAt()來(lái)定義視線的方向,這個(gè)函數(shù)封裝了一系列的平移和旋轉(zhuǎn)變換的命令。調(diào)用 gluLookAt()函數(shù)執(zhí)行視點(diǎn)轉(zhuǎn)換,確定觀察物體的視點(diǎn)位置和方向;利用模型轉(zhuǎn)換對(duì)模型進(jìn)行平移、旋轉(zhuǎn)和縮放操作,以確定物 體在場(chǎng)景中的位置和方向,其投影方式類(lèi)似于人眼的視覺(jué)機(jī)制。 用于增加圖形的真實(shí)感。函數(shù) gluPerspective()和glOrtho()用來(lái)定義投影方式:透視投影和正視投影;視區(qū)是用來(lái)顯示圖像的窗口中的一個(gè)矩形區(qū)域。 glViewport()用來(lái)設(shè)置視區(qū)的大小和位置。在 OpenGL 中,為了便于用戶更加嚴(yán)格地限制視圖體,允許定義左、有、上、下、遠(yuǎn)和近 6 個(gè)裁減面,這樣程序員就可以刪除場(chǎng)景中多余的形體。定義一個(gè)附加裁減平面的函數(shù)是 glClipPlane()。 光照 要繪制逼真的三維物體必須進(jìn)行光照處理。沒(méi)有光照的三維物體模型與二維物體沒(méi)有任何差別,沒(méi)有一點(diǎn)立體感。只有具有光照的物體才是真正的三維物體。 OpenGL 可以控制光照與物體的關(guān)系,產(chǎn)生多種不同的視覺(jué)效果。 光照射到物體表面時(shí),可能被物體吸收、反射或透射。光的反射和透視部 分進(jìn)入視覺(jué)系統(tǒng)使我們能看見(jiàn)物體。光的顏色由其波長(zhǎng)決定。一束白光含有所有可見(jiàn)波長(zhǎng)的光。白光照射物體時(shí),只有所有可見(jiàn)光被等量吸收物體才會(huì)呈現(xiàn)灰色。如果被不等量吸收,物體會(huì)呈現(xiàn)其它的顏色。光的亮度由光強(qiáng)決定。從物體表面反射出來(lái)的光的強(qiáng)度取決于光源的位置、光強(qiáng)、物體材質(zhì)、物體表面位置、物體表面法線和視點(diǎn)的位置。 ( 1) 光源組成 : 11 ① 輻射光輻射光是最簡(jiǎn)單的一種成分,它源自發(fā)光體,并且不受其它光源的影響、例如 : 太陽(yáng)光和燈光。 ② 環(huán)境光有時(shí)又稱(chēng)為泛光,它經(jīng)過(guò)環(huán)境的多次散射,已經(jīng)不能確定其方向,而是好像來(lái)自各個(gè)方向。環(huán)境光 作用于物體表面時(shí),將沿各個(gè)方向均勻反射。 ③ 漫反射光來(lái)自一個(gè)方向,但作用于物體表面上后將沿各個(gè)方向均勻散射。 ④ 鏡面反射光來(lái)自特定方向,并沿一個(gè)特定方向離開(kāi)。 ( 2) 光源的創(chuàng)建、定位和啟用 前面介紹的光源類(lèi) C3DLight 中己經(jīng)提供了啟用光源的接口函數(shù)。實(shí)際上,該函數(shù)通過(guò) OpenGL 的函數(shù) void glLight (GLenum light, Type param, GLenumpnam)來(lái)指定光源的各種屬性 1161。其中 light 指定所定義光源的名稱(chēng), OpenGL 至多支持 8 個(gè)光源,分別為 GL_LIGHTO, GL_ LIGHT1… GL_ LIGHT7。參數(shù) param 指定所需設(shè)定的參數(shù)名稱(chēng),參數(shù) pnam 為指向 param 所指定屬性值的指針。它可以指向一個(gè)數(shù)組,也可以指向一個(gè)值。對(duì)于每個(gè)給定的光源,通過(guò)設(shè)定參數(shù) param 為 GL_ AMBIENT、 GL_ DIFFUSE 和GL_ SPECULAR 來(lái)定義環(huán)境光、漫反射光、鏡面反射光的屬性, pname 為指向一個(gè)對(duì)應(yīng)的顏色值。 OpenGL 中光源分為定向光源和定位光源兩種。光源定位時(shí)設(shè)置 pname 參數(shù)為 GL_ POSITION, param 指向光源位置的坐標(biāo)數(shù)組,光源位置的 三維齊次坐標(biāo) (x,y, 2, w)的第四個(gè)分量,的值決定此光源為定向光源還是定位光源。當(dāng) w 為零時(shí),所定義的為定向光源,其方向由 (x, y, z)決定。當(dāng) w 為非零時(shí),所定義的為定位光源,此時(shí) (x, y, z)代表光源的坐標(biāo)值。定位光源的確定位置決定了場(chǎng)景中物體表面的入射方向。 材質(zhì) 物體的材質(zhì)是指物體表面對(duì)光的反應(yīng)特性,通常分為三種 :反射性能、透射性能、吸收性能。為了模擬這個(gè)物理過(guò)程,計(jì)算機(jī)圖形設(shè)計(jì)需要建立物體的材質(zhì)模型。一種材質(zhì)由環(huán)境色、擴(kuò)散色、鏡面高亮色等組成,分別說(shuō)明了它對(duì)環(huán)境光、漫反射光和鏡面光反射的多少,即反射率。物體材質(zhì)影響物體的顏色、反光度、透明度等。假設(shè)一個(gè)只反射藍(lán)光的物體,在一束白光的照射下就呈藍(lán)色。一般來(lái)說(shuō),物體對(duì)環(huán)境光和漫反射的反射方式是相同的,因而對(duì)環(huán)境光和漫反射光的反射率基本上是相等的。但是,物體對(duì)于鏡面反射光的反射率是由鏡面反射光決定的,且物體的高亮色基本上與鏡面反射光的顏色是相同的。如果一個(gè)物體在青色光的照射下呈現(xiàn)藍(lán)色,只需設(shè)定物體的環(huán)境色和擴(kuò)散色均為藍(lán)色即可。為了讓它看起來(lái)自身能夠發(fā)光,可以用輻射光來(lái)模擬自體發(fā)光的物體。 12 OpenGL 通過(guò)函數(shù) void glMaterial{f, i, f} [v] (Glenum face, Glenumpname,TYPE* param)來(lái)定義光照計(jì)算中所采用的材質(zhì) Del。參數(shù) face 的值 GL FRONT, GL_ BACK, GLFRONTANDBACK,分別指定應(yīng)用所定義材質(zhì)參數(shù)的是物體的正面、背面、還是同時(shí)應(yīng)用于正反兩面,函數(shù)中所定義的材質(zhì)參數(shù)由 pname 來(lái)指定,其值由 par 二給定。 光照與材質(zhì)的關(guān)系 創(chuàng)建光源和材質(zhì)后,如果不啟用光照處理,頂點(diǎn)的顏色由當(dāng)前顏色值確定,啟用光照處理后,頂點(diǎn)顏色計(jì)算將在視覺(jué)坐標(biāo)系按光照計(jì)算 公式進(jìn)行。如果一束光的 RGB 值為 (LR, LG, LB),被照材質(zhì)的 RGB 值為 (MR, MG, MB) , 則在不考慮其他反射效果的情況下, 眼睛所看到的顏色由 (LR*MR, LG*MG, LB*MB)決定。 與此類(lèi)似,如果到達(dá)眼睛的兩束光的 RGB 值分別為 (R1, G1, B1)和 (R2, B2, G2),則OpenGL 將對(duì)應(yīng)的值相加,得到 (R1+R2,G1+G2,B1+B2)。不管哪一個(gè)相加結(jié)果大于 1 都視為 1。 紋理映射 在三維圖形繪制中,紋理映射是廣泛使用的,同時(shí)紋理映射也是一個(gè)相當(dāng)復(fù)雜的過(guò)程 ,采用一般的技術(shù),紋理映射將是一個(gè)很浩大的工程, OpenGL 提供了一種簡(jiǎn)單的紋理映射的方法,它可以將掃描的物體,真實(shí)紋理映射到繪制的三維物體的表面,從而大大減少了紋理映射的工作。 比如繪制一面磚墻,就可以用一幅真實(shí)的磚墻圖像或照片作為紋理貼到一個(gè)矩形上,這樣,一面逼真的磚墻就畫(huà)好了。如果不用紋理映射的方法,則墻上的每一塊磚都必須作為一個(gè)獨(dú)立的多邊形來(lái)畫(huà)。另外,紋理映射能夠保證在變換多 邊形時(shí),多邊形上的紋理圖案也隨之變化。例如,以透視投影方式觀察 桌面 時(shí),離視點(diǎn)遠(yuǎn)的磚塊的尺寸就會(huì)縮小,而離視點(diǎn)較近的就會(huì)大些。此外 ,紋理映射也常常運(yùn)用在其他一些領(lǐng)域,如飛行仿真中常把一大片植被的圖像映射到一些大多邊形上用以表示地面,或用大理石、木材、布匹等自然物質(zhì)的圖像作為紋理映射到多邊形上表示相應(yīng)的物體。 使用紋理映射需要幾個(gè)步驟:指定紋理、指定紋理應(yīng)用方式、激活紋理映射、指定紋理坐標(biāo)和幾何坐標(biāo)。 在本次設(shè)計(jì)中,使用的紋理數(shù)據(jù)格式是 BMP 文件的圖像格式,BMP 的結(jié)構(gòu)比較簡(jiǎn)單,屬于一種圖形、圖像數(shù)據(jù)的通用格式。主要使用 BMP 文件的數(shù)據(jù)格式完成對(duì)桌面繪制。 13 第 三 章 臺(tái)球游戲具體實(shí)現(xiàn) 在 MFC 中設(shè)計(jì)游戲顯示的框架 臺(tái)球游戲是用 OpenGL 和 MFC 框架共同實(shí)現(xiàn)的 3D 游戲,設(shè)計(jì)臺(tái)球游戲的時(shí)候第一步首先是設(shè)計(jì)運(yùn)行游戲的時(shí)候所需要的框架,利用了 MFC 里面視圖類(lèi)中的基于對(duì)話框的設(shè)計(jì)來(lái)完成對(duì)游戲整體框架的設(shè)計(jì)主要有四個(gè)大部分組成,分別是由菜單欄和工具欄,控制力量框架,游戲類(lèi)型框架和游戲大廳界面。 如圖 所示: 14 圖 框架流程圖 Figure frame of flow chart ( 1) 菜單欄和工具欄,菜單欄設(shè)置為了方便用戶的選擇和利用快捷鍵來(lái)操作游戲。而工具欄是為了設(shè)置各種選擇角度,對(duì)于游戲界面的放大和縮小,加入和新建游戲的圖標(biāo)工具,此外還可以根據(jù)這個(gè)工具欄中的選擇工具來(lái)控制操作臺(tái)球游戲的球桿的方向和力度。 ( 2) 控制力量框架,在這里可以顯示選擇的力量的大小,根據(jù)顯示線條的長(zhǎng)短來(lái)調(diào)整對(duì)臺(tái)球球桿的力量的控制,利用鼠標(biāo)來(lái)改變箭頭的方向改變對(duì)球桿的方向的改變。利用這這個(gè)顯示窗口可以方便的控制球桿。 ( 3) 游戲類(lèi)型框架,這個(gè)框架類(lèi)是來(lái)自對(duì)話框的公有繼承,這個(gè)框架的主要功能是為了加 入游戲,還是新建游戲。 ( 4) 游戲大廳界面,臺(tái)球的顯示和操作的界面都是在這個(gè)框架下面實(shí)現(xiàn)。是臺(tái)球游戲核心框架。主要功能是為了顯示臺(tái)球球體以及在碰撞運(yùn)行過(guò)程。此外還要顯示臺(tái)球桌面。以及臺(tái)球在桌面停放的位置。 在 MFC 中使用 OpenGL 設(shè)計(jì)臺(tái)球游戲 根據(jù) 上述三維虛擬臺(tái)球 游戲的功能要求,將該 游戲程序 劃分為 以下 模塊 ,其結(jié)構(gòu)如圖 所示: 游戲框架 菜單欄和工具欄 游戲大廳界面 游戲類(lèi)型框架 控制力量框架 15 圖 界面流程 圖 Figure interface flowchart ● 窗口模塊 創(chuàng)建 windows 窗口處理消息 ● 場(chǎng)景模塊 管理整個(gè)演示程序中的對(duì)象 ● 臺(tái)球界面模塊 用于 游戲界面的顯示 ● 數(shù)學(xué)模型模塊 用于大量的矩陣運(yùn)算 ● 模型控制模塊 鍵盤(pán) 鼠標(biāo) 控制模型位置和方向 及運(yùn)動(dòng) ● 幾何模型模塊 幾何模型的繪制 ● 桌面 用于承載臺(tái)球的桌面的繪制(主桌面、桌角和桌邊) ● 球體 用于運(yùn)動(dòng)球體的繪制(有一個(gè)母球、 7 個(gè)藍(lán)球和 8 個(gè)紅球) ● 箭頭 用于控制力量的箭頭的繪制 ● 運(yùn)動(dòng)模擬模塊 解 決球桿與球、球與球及球與球桌邊界的碰撞和運(yùn)動(dòng) ● 變換模塊 用于實(shí)現(xiàn)觀察者的變換 整個(gè)場(chǎng)景的繪制是程序的核心,主要包括靜態(tài)場(chǎng)景和動(dòng)態(tài)場(chǎng)景兩部分內(nèi)容的繪制;模型控制模塊用于實(shí)現(xiàn)球體的運(yùn)動(dòng),球體的碰撞的具體實(shí)現(xiàn),視角變換;幾何模型模塊是用于完成一些矢量計(jì)算和矩陣的計(jì)算。 使用 OpenGL 具體實(shí)現(xiàn)臺(tái)球 桌面 球桌是有三部分組成的,每個(gè)部分都是有一個(gè)填充的四邊形組成,四邊形的顏色需要用紋理處理。然后紋理的初始化需要三種紋理,三種紋理分別是臺(tái)球四周木質(zhì)暗紅色紋理、臺(tái)球主桌面紋理、木質(zhì)紋理和主 桌面之間的過(guò)濾紋理(陰影紋理)。 臺(tái)球桌根據(jù)紋理的分類(lèi),設(shè)計(jì)主桌面,桌角和桌邊。 臺(tái)球桌面的設(shè)計(jì)流程,如圖 所示 : 場(chǎng)景模塊 臺(tái)球界面 模塊 模型控制模塊 運(yùn)動(dòng)模擬模塊 窗口模塊 幾何模型模塊 數(shù)學(xué)模型模塊 變換 模塊 桌面 箭頭 球體 16 圖 桌面流程圖 Figure playground flowchart 根據(jù) OpenGL 紋理映射繪制主桌面,桌角和桌邊。紋理映射的基本步驟如下:定義紋理; 綁定 紋理;控制濾波;說(shuō)明紋理映射方式;繪制場(chǎng)景,給出頂點(diǎn)的紋理坐標(biāo)和幾何坐標(biāo)。 ( 1) 二維紋理定義 : void glTexImage2D(GLenum target,GLint level,GLint ponents, GLsizei width,Glsizei height,GLint border, GLenum format,GLenum type,const GLvoid
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1