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

正文內(nèi)容

基于opengl的臺球游戲的設(shè)計論文-在線瀏覽

2025-08-05 16:20本頁面
  

【正文】 應(yīng)用程序集成開發(fā)環(huán)境,它不僅支持Visual C++,還支持Visual Basic,Visual J++,Visual InterDev等Microsoft系列開發(fā)工具。使用Developer Studio,可以完成創(chuàng)建、調(diào)試、修改應(yīng)用程序等的各種操作。Visual C++ 公司推出的Micosoft Visual Studio ,同時也是一種C/C++編譯程序,內(nèi)含一個集成開發(fā)環(huán)境,簡稱IDE(Intergrated Development Environment)。齊全的功能使Visual C++ 。仿真模擬、三維游戲等,從而更有機(jī)會、更方便地使用OpenGL來建立自己的三維圖形世界;③OpenGL可以與VC++緊密接口,便于實現(xiàn)有關(guān)計算和圖形算法,可保證算法的正確性和可靠性。它包括一百多個圖形函數(shù),開發(fā)者可以用這些函數(shù)來簡歷三維模型和進(jìn)行三維實時交互。OpenGL強(qiáng)有力的圖形函數(shù)不要求開發(fā)者把三維物體模型的數(shù)據(jù)寫成固定的數(shù)據(jù)格式。長期以來從事三維圖形開發(fā)的技術(shù)人員都不得不在自己的程序中編寫矩陣變換、外部設(shè)備訪問等函數(shù),為調(diào)用制這些與自己的軟件開發(fā)目標(biāo)關(guān)系不十分密切的函數(shù)費腦筋,而OpenGL正是提供了一種直觀的編程環(huán)境,它提供了一系列函數(shù)大大地簡化了三維圖形程序。這種直觀的三維圖形開發(fā)環(huán)境體現(xiàn)了OpenGL的開發(fā)優(yōu),這也是許多三維圖形開發(fā)者熱衷于OpenGL的緣由所在。OpenGL的這些能力為實現(xiàn)逼真的三維渲染效果、簡歷交互的三維景觀提供了優(yōu)秀的軟件開發(fā)工具。但這里我們選擇VC++ 。Windows程序利用OpenGL開發(fā)游戲時候需要GLUT庫。即lib文件夾(這個lib文件夾一般是在自己安裝的Mircosoft Visual C++下面VC98 下面一個lib文件夾里面)。利用了OpenGL的三維圖形技術(shù)和VC++ 的程序設(shè)計的優(yōu)點,開發(fā)出來的圖形程序更加流暢和容易實現(xiàn)。它包括100多個圖形函數(shù),開發(fā)者可以用這些函數(shù)來簡歷三維模型和進(jìn)行三維實時交互。OpenGL作為一個與硬件獨立的圖形接口,它不提供與硬件密切相關(guān)的設(shè)備操作函數(shù),同時,它也不提供描述類似飛機(jī)、汽車、分子形狀等復(fù)雜形體的圖形操作函數(shù)。因此OpenGL的圖形操作函數(shù)十分靈活。(1)網(wǎng)絡(luò)線繪圖方式(wireframe):這種僅繪制三維物體的網(wǎng)絡(luò)輪廓線。(3)反走樣網(wǎng)絡(luò)線繪制方式(antialiased):用網(wǎng)格線方式繪圖,繪圖時采用反走樣技術(shù)減少圖形線的參次不齊。(5)光滑消隱繪圖方式(smooth_shade):對模型進(jìn)行消隱,關(guān)照渲染著色的過程中再進(jìn)行光滑處理,這種方式更接近于現(xiàn)實。(7)運動模糊的繪制方式(motionblured):模擬物體運動時人煙觀察所感覺的動感現(xiàn)象。(9)深度域效果(depthofeffects):類似于照相機(jī)鏡頭效果,模型在聚焦點處清晰,反之則模糊。在OpenGL中的所有數(shù)據(jù)包括幾何頂點數(shù)據(jù)和象素數(shù)據(jù)都可以被存儲在顯示列表中或者立即可以得到處理。OpenGL要求把所有的幾何圖形單元都用頂點來描述,這樣運算器和逐個頂點計算操作都可以針對每個頂點進(jìn)行計算和操作,然后進(jìn)行光柵化形成圖形碎片;對于象素數(shù)據(jù),象素操作結(jié)果被存儲在紋理組裝用的內(nèi)存中,再象幾何頂點操作一樣光柵化形成圖形片元。 OpenGL 圖形操作步驟在上面說明了OpenGL 的基本工作流程,根據(jù)這個流程可以歸納出在OpenGL中進(jìn)行主要的圖形操作直至在計算機(jī)屏幕上渲染繪制出三維圖形景觀的基本步驟:(1)建立景物模型根據(jù)基本圖形單元建立景物模型,并且對所建立的模型進(jìn)行數(shù)學(xué)描述(OpenGL 中把:點、線、多邊形、圖像和位圖都作為基本圖形單元)。(3)物體顏色,紋理處理計算模型中所有物體的色彩,其中的色彩根據(jù)應(yīng)用要求來確定,同時確定關(guān)照條件、紋理粘貼方式等。在這些步驟的執(zhí)行過程中,OpenGL可能執(zhí)行其他的一些操作,例如自動消隱處理等。 OpenGL 游戲開發(fā)需要的技術(shù)通過圖形變換,可由簡單圖形生成復(fù)雜圖形,可用二維圖形表示三維形體,甚至可以對靜態(tài)圖形經(jīng)過快速變換而獲得圖形的動態(tài)顯示效果。創(chuàng)建好幾何模型后,只有放在三維空間中的適當(dāng)位置。為了觀察場景中的模型,需要進(jìn)行視景轉(zhuǎn)換,包括視點轉(zhuǎn)換、模型轉(zhuǎn)換、投影轉(zhuǎn)換和視口轉(zhuǎn)換。通過模型變換可以改變物體的位置和尺寸, 相應(yīng)的函數(shù)有g(shù)lTranlate*(),glRotate*(),glScale*(),這三條命令相當(dāng)于生成平移、旋轉(zhuǎn)和縮放的矩陣,并以此矩陣作為參數(shù),然后調(diào)用glMuhiMatrix*()。調(diào)用gluLookAt()函數(shù)執(zhí)行視點轉(zhuǎn)換,確定觀察物體的視點位置和方向;利用模型轉(zhuǎn)換對模型進(jìn)行平移、旋轉(zhuǎn)和縮放操作,以確定物體在場景中的位置和方向,其投影方式類似于人眼的視覺機(jī)制。函數(shù)gluPerspective()和glOrtho()用來定義投影方式:透視投影和正視投影;視區(qū)是用來顯示圖像的窗口中的一個矩形區(qū)域。在OpenGL中,為了便于用戶更加嚴(yán)格地限制視圖體,允許定義左、有、上、下、遠(yuǎn)和近6個裁減面,這樣程序員就可以刪除場景中多余的形體。 光照要繪制逼真的三維物體必須進(jìn)行光照處理。只有具有光照的物體才是真正的三維物體。光照射到物體表面時,可能被物體吸收、反射或透射。光的顏色由其波長決定。白光照射物體時,只有所有可見光被等量吸收物體才會呈現(xiàn)灰色。光的亮度由光強(qiáng)決定。(1)光源組成:①輻射光輻射光是最簡單的一種成分,它源自發(fā)光體,并且不受其它光源的影響、例如:太陽光和燈光。環(huán)境光作用于物體表面時,將沿各個方向均勻反射。④鏡面反射光來自特定方向,并沿一個特定方向離開。實際上,該函數(shù)通過OpenGL的函數(shù)void glLight (GLenum light, Type param, GLenumpnam)來指定光源的各種屬性1161。參數(shù)param指定所需設(shè)定的參數(shù)名稱,參數(shù)pnam為指向param所指定屬性值的指針。對于每個給定的光源,通過設(shè)定參數(shù)param為GL_ AMBIENT、GL_ DIFFUSE和GL_ SPECULAR來定義環(huán)境光、漫反射光、鏡面反射光的屬性,pname為指向一個對應(yīng)的顏色值。光源定位時設(shè)置pname參數(shù)為GL_ POSITION, param指向光源位置的坐標(biāo)數(shù)組,光源位置的三維齊次坐標(biāo)(x,y,2,w)的第四個分量,的值決定此光源為定向光源還是定位光源。當(dāng)w為非零時,所定義的為定位光源,此時(x, y, z)代表光源的坐標(biāo)值。 材質(zhì)物體的材質(zhì)是指物體表面對光的反應(yīng)特性,通常分為三種:反射性能、透射性能、吸收性能。一種材質(zhì)由環(huán)境色、擴(kuò)散色、鏡面高亮色等組成,分別說明了它對環(huán)境光、漫反射光和鏡面光反射的多少,即反射率。假設(shè)一個只反射藍(lán)光的物體,在一束白光的照射下就呈藍(lán)色。但是,物體對于鏡面反射光的反射率是由鏡面反射光決定的,且物體的高亮色基本上與鏡面反射光的顏色是相同的。為了讓它看起來自身能夠發(fā)光,可以用輻射光來模擬自體發(fā)光的物體。參數(shù)face的值GL FRONT, GL_ BACK, GLFRONTANDBACK,分別指定應(yīng)用所定義材質(zhì)參數(shù)的是物體的正面、背面、還是同時應(yīng)用于正反兩面,函數(shù)中所定義的材質(zhì)參數(shù)由pname來指定,其值由par二給定。如果一束光的RGB值為(LR, LG, LB),被照材質(zhì)的RGB值為(MR, MG, MB) ,則在不考慮其他反射效果的情況下, 眼睛所看到的顏色由(LR*MR, LG*MG, LB*MB)決定。不管哪一個相加結(jié)果大于1都視為1。比如繪制一面磚墻,就可以用一幅真實的磚墻圖像或照片作為紋理貼到一個矩形上,這樣,一面逼真的磚墻就畫好了。另外,紋理映射能夠保證在變換多邊形時,多邊形上的紋理圖案也隨之變化。此外,紋理映射也常常運用在其他一些領(lǐng)域,如飛行仿真中常把一大片植被的圖像映射到一些大多邊形上用以表示地面,或用大理石、木材、布匹等自然物質(zhì)的圖像作為紋理映射到多邊形上表示相應(yīng)的物體。在本次設(shè)計中,使用的紋理數(shù)據(jù)格式是BMP文件的圖像格式,BMP的結(jié)構(gòu)比較簡單,屬于一種圖形、圖像數(shù)據(jù)的通用格式。第三章 臺球游戲具體實現(xiàn) 在MFC中設(shè)計游戲顯示的框架臺球游戲是用OpenGL和MFC框架共同實現(xiàn)的3D游戲,設(shè)計臺球游戲的時候第一步首先是設(shè)計運行游戲的時候所需要的框架,利用了MFC里面視圖類中的基于對話框的設(shè)計來完成對游戲整體框架的設(shè)計主要有四個大部分組成,分別是由菜單欄和工具欄,控制力量框架,游戲類型框架和游戲大廳界面。而工具欄是為了設(shè)置各種選擇角度,對于游戲界面的放大和縮小,加入和新建游戲的圖標(biāo)工具,此外還可以根據(jù)這個工具欄中的選擇工具來控制操作臺球游戲的球桿的方向和力度。利用這這個顯示窗口可以方便的控制球桿。(4)游戲大廳界面,臺球的顯示和操作的界面都是在這個框架下面實現(xiàn)。主要功能是為了顯示臺球球體以及在碰撞運行過程。以及臺球在桌面停放的位置。 使用OpenGL具體實現(xiàn)臺球桌面球桌是有三部分組成的,每個部分都是有一個填充的四邊形組成,四邊形的顏色需要用紋理處理。臺球桌根據(jù)紋理的分類,設(shè)計主桌面,桌角和桌邊。紋理映射的基本步驟如下:定義紋理;綁定紋理;控制濾波;說明紋理映射方式;繪制場景,給出頂點的紋理坐標(biāo)和幾何坐標(biāo)。參數(shù)level表示多級分辨率的紋理圖像的級數(shù),若只有一種分辨率,則level設(shè)為0,參數(shù)ponents是一個從1~4的整數(shù),指出選擇了R、G、B、A中的哪些分量用于調(diào)整和混合,1表示了選擇了R分量,2表示選擇了R和A兩個分量,3表示了選擇R、G、B三個分量,4表示選擇了R、G、B、A 4個分量。紋理映射的最大尺寸依賴于OpenGL,但它至少必須是使用256x256,若width和height設(shè)置為0,則紋理映射關(guān)閉。類似地,參數(shù)type是GL_BYPE、GL_UNSIGNED_BYTE、GL_SHORT、GL_UNSIGNED_SHORT、GL_INT、GL_UNSIGNED_INT、GL_FLOAT或GL_BITMAP。(2)綁定紋理的使用:函數(shù)glBindTexture()綁定了一個紋理對象名時,將創(chuàng)建一個新的紋理對象,并將其紋理圖像數(shù)據(jù)和紋理屬性設(shè)置為默認(rèn)值。紋理對象中可能包含了紋理圖像和相關(guān)的mipmap圖像,其中包括相關(guān)的數(shù)據(jù),如寬度、高度、邊框?qū)挾取?nèi)部格式、分量的精度和紋理屬性。再次綁定一個紋理對象時,其數(shù)據(jù)將成為當(dāng)前的紋理狀態(tài)(以前綁定的紋理狀態(tài)被替換掉)。如果參數(shù)textureName為非零的無符號整數(shù),且首次被使用,將創(chuàng)建一個新的紋理對象,該紋理對象將進(jìn)入活動狀態(tài);如果參數(shù)textureName為0,OpenGL將停止使用紋理對象,返回到未命名的默認(rèn)紋理。紋理對象剛被創(chuàng)建時,諸如縮小濾波方法和放大濾波方法、環(huán)繞模式、邊框顏色和紋理優(yōu)先級等紋理屬性被設(shè)置為默認(rèn)值。第一個參數(shù)target是GL_TEXTURE_2D,它指出了二維紋理說明參數(shù);。但當(dāng)它映射到一個多邊形或曲面上并變換到屏幕坐標(biāo)時,紋理的單個紋素很少對應(yīng)于屏幕圖像上的像素。下面的函數(shù)是說明放大和縮小的方法:GlTexParameteri(GL_TEXTURE_2,GL_TEXTURE_MAG_FILTER,GL_NEAREST);GlTexParameteri(GL_TEXURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);實際上,第一個參數(shù)可以是GL_TEXTURE_1D或GL_TEXTURE_2D,即表明所使用的紋理是一維的還是二維;第二參數(shù)指定濾波方法,其中GL_TEXTURE_MAG_FILTER指定為放大濾波方法,GL_TEXTURE_MIN_FILTER指定為縮小濾波方法;第三個參數(shù)說明濾波方式。GL_NEAREST所需計算比GL_LINEAR要少,因而執(zhí)行的更快,但GL_LINEAR提供了比較平滑的效果。實際上,可以用紋理中的值來調(diào)整多邊形(曲面)原來的顏色,或用紋理圖像中的顏色與多邊形(曲面)原來的顏色進(jìn)行混合。(5)紋理坐標(biāo):在繪制紋理映射場景時,不僅要給每個頂點定義幾何坐標(biāo),而且也要定義紋理坐標(biāo)。并且頂點之間的紋理坐標(biāo)插值與基礎(chǔ)篇中所講的平滑著色插值方法相同。其中一維常用s坐標(biāo)表示,二維坐標(biāo)常用(s,t)坐標(biāo)表示,在桌面紋理中忽略了r坐標(biāo),q坐標(biāo)像w一樣,一半值為1,主要用于建立齊次坐標(biāo)。對于gltextCoord2f()可以設(shè)置s和t坐標(biāo)值,r設(shè)置為0,q設(shè)置為1;而TYPE的對應(yīng)值(Glshort、Glint、glfloat或Gldouble)來說明坐標(biāo)的類型。函數(shù)glVertex{234}{sifd}[v](TYPE coords)可以用二維、三維或齊次坐標(biāo)定義頂點。函數(shù)glBegin(Glenum mode)標(biāo)志描述一個幾何圖元頂點列表的開始,相應(yīng)標(biāo)志完成的函數(shù)glEnd()。其參數(shù)mode表示幾何圖元的描述類型。 使用OpenGL具體實現(xiàn)臺球球體完成桌面的繪制,需要對桌面上的臺球的繪制,把球體分成了三個部分一個是母球的繪制,練習(xí)需要的紅球和藍(lán)球的繪制。球體繪制明暗處理光源材質(zhì)母球紅球藍(lán)球 球體流程圖Figure ball flowchart球體繪制的基本步驟如下:明暗處理;光源;材質(zhì);球體繪制,給出球體的所在位置。在OpenGL中,用單一顏色處理的稱為平面明暗處理(Flat Shading),用許多不同顏色處理稱為光滑明暗處理(Smooth Shading),也稱為Gouraud明暗處理(Gouraud Shading)。應(yīng)用平面明暗處理模式時,多邊形內(nèi)每個點的法向一致,且顏色也一致;應(yīng)用光滑明暗處理模式時,多邊形所有點的法向是由內(nèi)插生成的,具有一定的連續(xù)性,因此每個點的顏色也相應(yīng)內(nèi)插,故呈現(xiàn)不同色。本例中采用的就是光滑明暗處理。選擇不同的特性值,則對應(yīng)的光源作用在物體上的效果也不一樣。其中第一個參數(shù)light指定所創(chuàng)建光源號,如GL_LIGHT0、GL_LIGHT.......GL_LIGHT7。最后一個參數(shù)設(shè)置相應(yīng)的光源特性值。光源的創(chuàng)建多數(shù)情況下用數(shù)組創(chuàng)建。如果只是簡單地將當(dāng)前顏色映射到當(dāng)前頂點上去,不進(jìn)行法向、光源、材質(zhì)等復(fù)雜
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1