3D遊戲從入門到精通 4

2021-08-22 04:22:28 字數 1037 閱讀 9223

2.10.1平面的表示

3d空間裡的物體都是實體的,主要由平面組成。比如正方體,就有6個平面。在d3d裡組成三維物體的基本平面是三角形,無論是多麼複雜的物體,都是有三角形組成的。並且d3d裡支援顯示最小的圖形也是三角形,它是沒有點和直線顯示的。因此,要顯示正方體,就需要把每個平面分成兩個三角形,才能顯示。如下圖所示:

為什麼選擇三角形作為d3d裡最小的平面呢?由於三個點組成的平面,肯定是共面的,是平坦的,並且顯示效率是最高的。如果選擇其它多邊形的話,就存在點不共面的情況,這樣變得非常複雜,所以目前顯示卡也是針對三角形進行優化顯示的。

要在d3d裡顯示物體,就是顯示很多的三角形,讓這些三角形連線起來,就組成遊戲裡的人體,動物,**等等。在幾何裡就知道每個三角形都有三個頂點組成,那麼只要設定了三個頂點的值,就可以在d3d裡顯示三角形出來了。用d3d裡的向量表示三個頂點就是:

a: d3dxvector3( -1.0f, -1.0f,0.0f );

b: d3dxvector3(0.0f,1.0f,0.0f );

c: d3dxvector3(1.0f, -1.0f,0.0f );

只要把所有三角形的頂點,都按上面格式設定到頂點緩衝區裡,就可以顯示乙個三角形出來。但這個三角形又可分為兩個表面:前表面和後表面。在d3d預設情況下,只會顯示前表面。那麼怎麼樣來區別前表面和後表面呢?由於d3d是採用左手座標系,正對著平面看去是順時針方向的頂點順序就是前表面。如下圖所示:

如果不小心把頂點的順序搞反,就會看不到表面顯示。並且還會關係到後面的燈光顯示,紋理顯示。

其實,前表面就是平面的法向量指向的表面。

只要認識到組成平面的頂點以及頂點排列順序,就可以用平面構成三維物體了。不管多麼複雜的物體,都可以由頂點組成平面,再有平面組成物體。不管是圓的物體,還是方的物體,都可以使用三角形去組成。其實這種三維物體是數位化的,永遠都是盡可能逼近,不可能是完全相同的。比如要顯示乙個足球,它是圓的,需要非常多的三角形去構成它,但不可能完全一樣的。並且使用過多的三角形,就會導致cpu或者gpu處理不過來。在目前的個人電腦裡,雖然處理三角形的速度快了很多,但真的要顯示大量三角形,還是不行的。

3D遊戲從入門到精通 31

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

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

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

3D遊戲從入門到精通 11

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