下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
永威國(guó)際道州本土游戲永威國(guó)際道州本土游戲第13章:HLSL基礎(chǔ)問答答案1.?在HLSL中,如何獲取一個(gè)float4對(duì)象的第一個(gè)元素??如果您想要獲取一個(gè)叫做color的float4對(duì)象中的第一個(gè)元素,您可以用數(shù)組符號(hào)(color[0])或者您也可以使用顏色和位置的命名空間(color.r或者color.x)?2.?什么叫做混合(swizzling)??Swizzling是指從顏色或位置的命名空間(如color.rb或color.xyz)取兩個(gè)或多個(gè)元素來獲取一個(gè)float4或類似數(shù)據(jù)類型的多個(gè)元素。?3.?在HLSL,如何規(guī)定使用頂點(diǎn)、像素著色器的哪一個(gè)版本??在HLSL效果文件處理技巧中,您可以通過提供帶有著色器版本的compile關(guān)鍵字來指定一個(gè)VertexShader(頂點(diǎn)著色器)和/或PixelShader(像素著色器)。對(duì)于頂點(diǎn)著色器,您可以用vs_2_0句法,而對(duì)于像素著色器,您則可以用ps_2_0語法。?4.?若沒有HLSL,您不能實(shí)現(xiàn)哪些效果??HLSL允許開發(fā)人員連接到硬件功能,而XNA框架是不提供這些的。原因:圖形硬件變得越來越復(fù)雜,如果XNA框架被擴(kuò)展來處理所有顯卡(graphics?card)的話,XNA框架會(huì)變得很龐大。所以,HLSL與XNA協(xié)作,允許您為顯卡本身編寫代碼。?5.?在HLSL,怎樣將那個(gè)兩個(gè)矩陣相乘??HLSL中的mul函數(shù)可以將兩個(gè)矩陣相乘。?6.?語義(semantic)在HLSL扮演什么角色??一個(gè)語義標(biāo)記一個(gè)變量的特定用途。對(duì)于輸入?yún)?shù)(input?parameters),語義意味著該參數(shù)會(huì)被自動(dòng)賦予由語義指定的一個(gè)值;對(duì)于輸出參數(shù)(output?parameters),語義是一種標(biāo)記特定391變量含有特定信息的方式,這種信息會(huì)在著色器(shader)執(zhí)行完之后被處理。?練習(xí)答案使用本章所創(chuàng)建的代碼,繪制一個(gè)六面體,用樹木圖像作為每面的紋理。在六面體的每面上,使用本章創(chuàng)建的四種紋理特效(一般紋理、模糊紋理、反相紋理、灰度紋理)的其中一種,每種效果必須被至少使用一次。?本練習(xí)和第9章的練習(xí)很相似,在那里您做了一個(gè)每個(gè)面紋理都不同的六面體。不同之處在于,您現(xiàn)在要對(duì)每個(gè)面應(yīng)用相同的紋理,再對(duì)那些面應(yīng)用不同的HLSL效果。?首先,根據(jù)本章所介紹的方法創(chuàng)建不同的效果文件,然后使用與下面類似的代碼來創(chuàng)建這個(gè)六面體并為其應(yīng)用您所創(chuàng)建的效果:?usingusingusingusingusingusingusingusingusingusingSystem;System.Collections.Generic;System.Linq;Microsoft.Xna.Framework;Microsoft.Xna.Framework.Audio;Microsoft.Xna.Framework.Content;Microsoft.Xna.Framework.GamerServices;Microsoft.Xna.Framework.Graphics;Microsoft.Xna.Framework.Input;Microsoft.Xna.Framework.Media;namespace_3D_Madness{//////Thisisthemaintypeforyourgame.///publicclassGame1:Microsoft.Xna.Framework.Game{GraphicsDeviceManagergraphics;SpriteBatchspriteBatch;//GamecameraCameracamera;//VertexdataVertexPositionTexture[]verts;VertexBuffervertexBuffer;//EffectEffectnormalEffect;EffectblurEffect;EffectnegativeEffect;EffectgrayscaleEffect;//MovementandrotationstuffMatrixworldTranslation=Matrix.Identity;MatrixworldRotation=Matrix.Identity;//TextureinfoTexture2Dtexture;publicGame1(){graphics=newGraphicsDeviceManager(this);Content.RootDirectory="Content";}392??//////Allowsthegametoperformanyinitializationit///needstobeforestartingtorun.Thisiswhereitcanqueryfor///anyrequiredservicesandloadcontent.///protectedoverridevoidInitialize(){//Initializecameracamera=newCamera(this,newVector3(0,0,5),Vector3.Zero,Vector3.Up);Components.Add(camera);base.Initialize();}//////LoadContentwillbecalledoncepergameandistheplacetoload///allofyourcontent.///protectedoverridevoidLoadContent(){//CreateanewSpriteBatch,whichcanbeusedtodrawtextures.spriteBatch=newSpriteBatch(GraphicsDevice);//initializeverticesverts=newVertexPositionTexture[24];//FRONTverts[0]=newVertexPositionTexture(newVector3(-1,1,1),newVector2(0,0));verts[1]=newVertexPositionTexture(newVector3(1,1,1),newVector2(1,0));verts[2]=newVertexPositionTexture(newVector3(-1,-1,1),newVector2(0,1));verts[3]=newVertexPositionTexture(newVector3(1,-1,1),newVector2(1,1));//BACKverts[4]=newVertexPositionTexture(newVector3(1,1,-1),newVector2(0,0));verts[5]=newVertexPositionTexture(newVector3(-1,1,-1),newVector2(1,0));verts[6]=newVertexPositionTexture(newVector3(1,-1,-1),newVector2(0,1));verts[7]=newVertexPositionTexture(newVector3(-1,-1,-1),newVector2(1,1));//LEFTverts[8]=newVertexPositionTexture(newVector3(-1,1,-1),newVector2(0,0));verts[9]=newVertexPositionTexture(newVector3(-1,1,1),newVector2(1,0));verts[10]=newVertexPositionTexture(newVector3(-1,-1,-1),newVector2(0,1));verts[11]=newVertexPositionTexture(newVector3(-1,-1,1),newVector2(1,1));//RIGHTverts[12]=newVertexPositionTexture(newVector3(1,1,1),newVector2(0,0));verts[13]=newVertexPositionTexture(newVector3(1,1,-1),newVector2(1,0));verts[14]=newVertexPositionTexture(newVector3(1,-1,1),newVector2(0,1));verts[15]=newVertexPositionTexture(?393newVector3(1,-1,-1),newVector2(1,1));//TOPverts[16]=newVertexPositionTexture(newVector3(-1,1,-1),newVector2(0,0));verts[17]=newVertexPositionTexture(newVector3(1,1,-1),newVector2(1,0));verts[18]=newVertexPositionTexture(newVector3(-1,1,1),newVector2(0,1));verts[19]=newVertexPositionTexture(newVector3(1,1,1),newVector2(1,1));//BOTTOMverts[20]=newVertexPositionTexture(newVector3(-1,-1,1),newVector2(0,0));verts[21]=newVertexPositionTexture(newVector3(1,-1,1),newVector2(1,0));verts[22]=newVertexPositionTexture(newVector3(-1,-1,-1),newVector2(0,1));verts[23]=newVertexPositionTexture(newVector3(1,-1,-1),newVector2(1,1));//SetvertexdatainVertexBuffervertexBuffer=newVertexBuffer(GraphicsDevice,typeof(VertexPositionTexture),verts.Length,BufferUsage.None);vertexBuffer.SetData(verts);//LoadeffectnormalEffect=Content.Load<Effect>(@"effects\Red");grayscaleEffect=Content.Load<Effect>(@"effects\Grayscale");negativeEffect=Content.Load<Effect>(@"effects\Negative");blurEffect=Content.Load<Effect>(@"effects\Blur");//Loadtexturetexture=Content.Load<Texture2D>(@"Textures\trees");}//////UnloadContentwillbecalledoncepergameandis///theplacetounloadallcontent.///protectedoverridevoidUnloadContent(){//TODO:Unloadanynon-ContentManagercontenthere}//////Allowsthegametorunlogicsuchasupdatingtheworld,///checkingforcollisions,gatheringinput,andplayingaudio.//////Providesasnapshotoftimingvalues.protectedoverridevoidUpdate(GameTimegameTime){//Allowsthegametoexitif(GamePad.GetState(PlayerIndex.One).Buttons.Back==ButtonState.Pressed)this.Exit();//TranslationKeyboardStatekeyboardState=Keyboard.GetState();if(keyboardState.IsKeyDown(Keys.Left))worldTranslation*=Matrix.CreateTranslation(-.01f,0,0);if(keyboardState.IsKeyDown(Keys.Right))394??worldTranslation*=Matrix.CreateTranslation(.01f,0,0);//RotationworldRotation*=Matrix.CreateFromYawPitchRoll(MathHelper.PiOver4/60,0,0);base.Update(gameTime);}//////Thisiscalledwhenthegameshoulddrawitself.//////Providesasnapshotoftimingvalues.///protectedoverridevoidDraw(GameTimegameTime){GraphicsDevice.Clear(Color.CornflowerBlue);//SetthevertexbufferontheGraphicsDeviceGraphicsDevice.SetVertexBuffer(vertexBuffer);//DrawfrontDrawVerts(normalEffect,0,2);//DrawbackDraw
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國(guó)際貨運(yùn)保險(xiǎn)條款解讀與合同簽訂3篇
- 2025年度個(gè)人借款聯(lián)保合同(含金融風(fēng)險(xiǎn)預(yù)警)4篇
- 《新型教育模式發(fā)展趨勢(shì)》課件
- 2025年國(guó)家能源集團(tuán)榆林能源公司招聘筆試參考題庫含答案解析
- 2025年上海倉(cāng)城農(nóng)業(yè)發(fā)展有限公司招聘筆試參考題庫含答案解析
- 2025年江蘇蘇州市相城水務(wù)建設(shè)投資集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2025年中國(guó)人民財(cái)產(chǎn)保險(xiǎn)股份有限公司贛州市分公司招聘筆試參考題庫附帶答案詳解
- 2025年度個(gè)人二手車交易合同(二手車鑒定評(píng)估技術(shù)升級(jí)版)3篇
- 二零二五版抵押借款房屋租賃收益分配合同示范4篇
- 漳州衛(wèi)生職業(yè)學(xué)院《建筑材料與力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 農(nóng)民工工資表格
- 【寒假預(yù)習(xí)】專題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級(jí)英語下冊(cè)寒假提前學(xué)(含答案)
- 2024年突發(fā)事件新聞發(fā)布與輿論引導(dǎo)合同
- 地方政府信訪人員穩(wěn)控實(shí)施方案
- 小紅書推廣合同范例
- 商業(yè)咨詢報(bào)告范文模板
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 幼兒園籃球課培訓(xùn)
- AQ 6111-2023個(gè)體防護(hù)裝備安全管理規(guī)范知識(shí)培訓(xùn)
- 老干工作業(yè)務(wù)培訓(xùn)
- 基底節(jié)腦出血護(hù)理查房
評(píng)論
0/150
提交評(píng)論