在Windows Phone中進行3D開發之七紋理

2021-08-26 11:33:09 字數 1298 閱讀 7599

經過前幾節內容的學習,我們已經讓物體具有了平移、縮放、旋轉的三大運動能力,通過組合使用,可以形成複雜的物體運動模型。

接下來,我們要給物體增加些顏色了,改變灰濛濛的世界。

還記得我們之前定義的三角形資料嗎?當初定義的時候是這樣的:

******** = new vertexpositioncolor;

我們使用了vertexpositioncolor物件陣列,該型別使用座標和顏色值來表示乙個頂點,但在此之前,該顏色值一直沒起到作用,我們看到的都是白色的三角形,其實想讓顏色生效非常簡單,只要在draw()方法新增下句即可:

basiceffect.vertexcolorenabled= true;

執行一下,絢麗的三角形就出來了。

不過,僅用顏色顯然不能製作更逼真的物體,比如說木頭的三角形,用顏色就不能準確表達了。這時,我們需要的是使用紋理,即使用木紋的貼到三角形上,最終看上去成為想要的效果。

在windows phone中,紋理是使用texture2d類來表示的,最常用的就是代表資源中的一張。具體的實現是在content工程中新增一張,比如在hellocontent中新增一張wood.jpg,然後在loadcontent()方法中就可以使用如下語句將表示為texture2d物件了。

texture =content.load(@"wood");

這樣我們就可以指定不同頂點的貼圖位置了。比如我們的三角形最上邊的點的uv座標就是(0.5,0),左下角點是(0,1),右下角點是(1,1)。對於需要使用紋理座標的三角形,前文用到的vertexpositioncolor型別已經不夠了,我們需要使用vertexpositiontexture型別,即每個頂點使用座標和紋理座標來描述,而不再是座標和顏色來描述了。對應的三角形資料如下:

******** = newvertexpositiontexture{

new vertexpositiontexture(newvector3(0, 1, 0), new vector2(0.5f,0)),

new vertexpositiontexture(newvector3(1, -1, 0), new vector2(1,1)),

new vertexpositiontexture(newvector3(-1,-1, 0), new vector2(0,1))

最後,要想得到渲染結果,修改draw()方法,調整basiceffect的紋理屬性為:

basiceffect.textureenabled = true;

basiceffect.texture = texture;

執行程式,可以得到帶木紋的三角形了。

附本節game1類的完整原始碼:

在VBA中進行除錯

只要從您的專案中觸發 vba就會執行。從簡單的開啟表單到單擊命令按鈕,各種各樣的物件事件都可能引起這種情況。當某些事情無法按預期工作時,您如何才能準確確定出什麼問題以及在 好吧,這就是本文可以為您提供的幫助。對於每個office應用程式,當然包括access,都有乙個整合的偵錯程式。要開啟偵錯程式視...

在Release版本中進行除錯

在release版本中進行除錯 許多開發人員在利用visual c 6.0開發程式時,經常會遇到程式在debug版本中能夠正常執行,但是在release版本中就會出現問題的情況。為了在release版本中發現和解決問題,需要在release版本中除錯程式,可是release版本卻不支援除錯,這該怎麼...

在ogre中進行精細射線檢測

ogre有乙個rayscenequery的類,在預設場景管理器下,這個類返回一組rayscenequeryresultentry,他們都是通過包圍盒進行的檢測,由於包圍盒過於簡陋,我們可以再進行更精細的基於面的射線碰撞檢測。主要注意的就是mesh的構造方式,是否用了index,index是16位還是...