


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
永威國(guó)際道州本土游戲永威國(guó)際道州本土游戲第13章:HLSL基礎(chǔ)問(wèn)答答案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è)元素來(lái)獲取一個(gè)float4或類(lèi)似數(shù)據(jù)類(lèi)型的多個(gè)元素。?3.?在HLSL,如何規(guī)定使用頂點(diǎn)、像素著色器的哪一個(gè)版本??在HLSL效果文件處理技巧中,您可以通過(guò)提供帶有著色器版本的compile關(guān)鍵字來(lái)指定一個(gè)VertexShader(頂點(diǎn)著色器)和/或PixelShader(像素著色器)。對(duì)于頂點(diǎn)著色器,您可以用vs_2_0句法,而對(duì)于像素著色器,您則可以用ps_2_0語(yǔ)法。?4.?若沒(méi)有HLSL,您不能實(shí)現(xiàn)哪些效果??HLSL允許開(kāi)發(fā)人員連接到硬件功能,而XNA框架是不提供這些的。原因:圖形硬件變得越來(lái)越復(fù)雜,如果XNA框架被擴(kuò)展來(lái)處理所有顯卡(graphics?card)的話(huà),XNA框架會(huì)變得很龐大。所以,HLSL與XNA協(xié)作,允許您為顯卡本身編寫(xiě)代碼。?5.?在HLSL,怎樣將那個(gè)兩個(gè)矩陣相乘??HLSL中的mul函數(shù)可以將兩個(gè)矩陣相乘。?6.?語(yǔ)義(semantic)在HLSL扮演什么角色??一個(gè)語(yǔ)義標(biāo)記一個(gè)變量的特定用途。對(duì)于輸入?yún)?shù)(input?parameters),語(yǔ)義意味著該參數(shù)會(huì)被自動(dòng)賦予由語(yǔ)義指定的一個(gè)值;對(duì)于輸出參數(shù)(output?parameters),語(yǔ)義是一種標(biāo)記特定391變量含有特定信息的方式,這種信息會(huì)在著色器(shader)執(zhí)行完之后被處理。?練習(xí)答案使用本章所創(chuàng)建的代碼,繪制一個(gè)六面體,用樹(shù)木圖像作為每面的紋理。在六面體的每面上,使用本章創(chuàng)建的四種紋理特效(一般紋理、模糊紋理、反相紋理、灰度紋理)的其中一種,每種效果必須被至少使用一次。?本練習(xí)和第9章的練習(xí)很相似,在那里您做了一個(gè)每個(gè)面紋理都不同的六面體。不同之處在于,您現(xiàn)在要對(duì)每個(gè)面應(yīng)用相同的紋理,再對(duì)那些面應(yīng)用不同的HLSL效果。?首先,根據(jù)本章所介紹的方法創(chuàng)建不同的效果文件,然后使用與下面類(lèi)似的代碼來(lái)創(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- LY/T 3385-2024植物新品種特異性、一致性、穩(wěn)定性測(cè)試指南落羽杉屬
- 化學(xué)●廣東卷丨2021年廣東省普通高中學(xué)業(yè)水平選擇性考試化學(xué)試卷及答案
- 筆線(xiàn)勾勒的技法變化豐富美學(xué)韻味中國(guó)文化精粹06課件
- 24h回顧法孫芝楊07課件
- 《三級(jí)醫(yī)院評(píng)審標(biāo)準(zhǔn)(2025年版)》
- 風(fēng)景園林基礎(chǔ)考研資料試題及參考答案詳解一套
- 《風(fēng)景園林招投標(biāo)與概預(yù)算》試題A附參考答案詳解(能力提升)
- 2023年上海市上海市松江區(qū)永豐街道招聘社區(qū)工作者真題附詳細(xì)解析
- 2024年山東華興機(jī)械集團(tuán)有限責(zé)任公司人員招聘筆試備考題庫(kù)及答案詳解(有一套)
- 無(wú)錫市2024-2025學(xué)年三年級(jí)下學(xué)期數(shù)學(xué)期末試題一(有答案)
- 供水泵(多級(jí)立式離心泵)培訓(xùn)課件2016424
- 山東2022年高考英語(yǔ)試題及答案
- 人工智能技術(shù)在化學(xué)教育中的應(yīng)用
- 中國(guó)國(guó)防歷史與國(guó)防建設(shè)課件
- 本地生活如何玩轉(zhuǎn)抖音引流
- 2022屆高三化學(xué)一輪復(fù)習(xí)實(shí)驗(yàn)強(qiáng)基練12無(wú)機(jī)物制備類(lèi)探究實(shí)驗(yàn)含解析
- 銷(xiāo)售話(huà)術(shù)900句(培訓(xùn)資料)
- 春香傳(主演:王志萍-陳娜君)
- 2022制造業(yè)數(shù)據(jù)治理白皮書(shū)
- 儀器校準(zhǔn)管理課件
- 同濟(jì)大學(xué)信紙
評(píng)論
0/150
提交評(píng)論