3D遊戲從入門到精通 26

2021-04-09 03:14:18 字數 754 閱讀 7592

在d3d裡,紋理的功能是非常強大的,還有很多功能,比如紋理環繞、紋理動畫、紋理重複、多重紋理、紋理溶合、立方體包圍盒紋理、光線紋理、紋理管理等等。在這裡先學習簡單的紋理,並且靈活地使用它,後面再慢慢地深入去學習。下面就詳細地解釋第乙個紋理例子。實現的紋理如下圖所示:

從上面看到,紋理貼到兩個三角形上面,就太像木板了。因此紋理在實現真實性起到很大的作用,目前的遊戲都是大量地使用紋理貼圖,來達到虛擬實境世界。要顯示乙個簡單的紋理,要經歷下面的步驟: 1)

建立紋理的頂點格式

前面很多例子使用的頂點格式,都是沒有紋理座標的,所以要在頂點結構裡加入紋理座標。如下面所示:

//定義頂點緩衝區裡用到的頂點格式。

struct vt_caitexture****** ;

vposition是頂點的位置,跟前面的例子是一樣的。

ftu,ftv是紋理座標,每個頂點裡都要設定紋理二維座標是多少,然後d3d就會根據這個兩頂點的座標值到紋理貼圖找到對應點的畫素值,然後顯示到螢幕上。 2)

載入紋理

紋理貼圖從那裡來呢?可以從檔案、資源和程式動態建立。這裡是從磁碟檔案讀取出來的。下面的**就是從檔案裡載入紋理貼圖:

//

//載入紋理。 //

if (loadtexturefromfile() != s_ok)

這裡呼叫函式

loadtexturefromfile

載入紋理,在那個函式裡是呼叫

d3dx

的函式來載入,再來仔細地看看這個函式的實現。

3D遊戲從入門到精通 31

當我們看到現實世界裡,有很多山地。那麼這種山地,在 3d世界裡又是怎麼樣顯示出來的呢?要模擬現實中的山地,就需要研究它怎麼樣構成,然後採用各種方法建立出來。在遊戲的世界裡,對於地形的要求是不嚴謹的,只要看起來像山地,就行了,而不像其它地理系統,一定要精確到跟現實世界里山比例一樣。因此,在這裡建立的 ...

3D遊戲從入門到精通 21 22

2.10.1 燈光與材質 在現實的世界裡,沒有光線,是什麼東西也看不見的。在d3d的世界裡,也是一樣的。但是在d3d裡有一種光線,是非常奇怪的,這種光線是沒有方向,沒有位置,整個世界全可以照亮的光線,它就是環境光,它其實有點像我們現實生活裡的無影燈。在d3d裡光線分為三種型別,分別是點光源 聚光燈和...

3D遊戲從入門到精通 11

2.10.1 索引緩衝區 上面已經學習了最簡單的三角形顯示,了解了整個3d物體的顯示流程,下面來學習乙個複雜一點的物體顯示,使用12個三角形構造成的正方體顯示。並且通過個例子學會使用索引緩衝區,提高圖形繪製的速度和效率。1 使用三角形構造立方體 由前面可知,任何複雜的物體,都是由三角形組成的。現在就...