3D遊戲從入門到精通 16

2021-04-09 00:12:24 字數 2068 閱讀 1300

4、 三角形帶列表

三角形顯示的方式總共分為三種,前面已經學習最多的是三角形列表,現在再來看看三角形帶列表是什麼樣的,這樣有什麼優點呢?這裡顯示圖形如下:

上面的圖形可以看出,只有6個頂點就可以顯示4個三角形,而採用三角形列表的方式,只能顯示兩個三角形。因此採用這種方式就會大大提高渲染效率,減少占用記憶體空間,減少占用系統頻寬。

具體的程式如下:

hresult hr;

// 建立頂點緩衝區。

if( failed( hr = m_pd3ddevice->createvertexbuffer(

2*3 * sizeof(vt_caiprimitive),

0, vt_caiprimitive::dwfvf,

d3dpool_managed, &pvb, null ) ) )

//

vt_caiprimitive* pvertices;

if( failed( hr = pvb->lock( 0, 0, (void**)&pvertices, 0 ) ) )

pvertices[0].vposition = d3dxvector3( -6.0f, -2.0f, 2.0f ); 

pvertices[0].crdiffuse = d3dcolor_colorvalue( 1.0, 0.0, 0.0, 1.0 );

pvertices[1].vposition = d3dxvector3( -4.0f, 2.0f, 2.0f );   

pvertices[1].crdiffuse = d3dcolor_colorvalue( 1.0, 0.0, 0.0, 1.0 ); //

pvertices[2].vposition = d3dxvector3( -2.0f, -2.0f, 2.0f ); 

pvertices[2].crdiffuse = d3dcolor_colorvalue( 0.0, 1.0, 0.0, 1.0 );

pvertices[3].vposition = d3dxvector3( 0.0f, 2.0f, 0.0f );    

pvertices[3].crdiffuse = d3dcolor_colorvalue( 0.0, 1.0, 0.0, 1.0 ); //

pvertices[4].vposition = d3dxvector3( 2.0f, -2.0f, 2.0f );   

pvertices[4].crdiffuse = d3dcolor_colorvalue( 0.0, 0.0, 1.0, 1.0 );

pvertices[5].vposition = d3dxvector3( 4.0f, 2.0f, 2.0f );    

pvertices[5].crdiffuse = d3dcolor_colorvalue( 0.0, 0.0, 1.0, 1.0 );

//解鎖頂點緩衝區。

pvb->unlock(); 

這段程式先建立6個頂點的緩衝區,然後依次地設定6個頂點的座標和頂點混合的顏色。然後再呼叫下面的**來顯示:

m_pd3ddevice->setrenderstate(d3drs_fillmode, d3dfill_wireframe);

m_pd3ddevice->setstreamsource( 0, m_pvb********strip, 0, sizeof(vt_caiprimitive) );

m_pd3ddevice->setfvf( vt_caiprimitive::dwfvf );

m_pd3ddevice->drawprimitive( d3dpt_********strip, 0, m_n********stripcount );

第一行先設定顯示方式為線框圖(d3dfill_wireframe),採用這種方式,很清楚地看到有多少個三角形被顯示出來。最後一行調drawprimitive來顯示,顯示方式是d3dpt_********strip方式顯示。

本電子書、

mm3d

引擎源程式

、例子源程式共

49 元一套

聯絡人:蔡軍生

****:

email: caimouse1976 at sina.com

3D遊戲從入門到精通 16

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!4 三角形帶列表 三角形顯示的方式總共分為三種,前面已經學習最多的是三角形列表,現在再來看看三角形帶列表是什麼樣的,這樣有什麼優點呢?這裡顯示圖形如下 上面的圖形可以看出,只有6個頂點就可以顯示4個三角形,而採用三角形列表的方式,只能顯示兩個三角形...

3D遊戲從入門到精通 31

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

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

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