我嘗試使用D3DPT_TRIANGLELIST時遇到問題。下面的例子來自一本書,所以我沒有看到問題是什麼。D3DPT_TRIANGLELIST無法正常工作
VertexData:
ColorVertex *v;
Triangle->Lock(0,0,(void**)&v,0);
v[0] = ColorVertex(-1.0f, 0.0f, 2.0f, D3DCOLOR_XRGB(255, 0,0));
v[1] = ColorVertex(0.0f, 0.0f, 2.0f, D3DCOLOR_XRGB(0,255,0));
v[2] = ColorVertex(1.0f, 0.0f, 2.0f, D3DCOLOR_XRGB(0,0,255));
Triangle->Unlock();
製圖功能:
Device->SetFVF(ColorVertex::FVF);
Device->SetStreamSource(0,Triangle,0,sizeof(ColorVertex));
D3DXMatrixTranslation(&World,-1.25f,0.0f,0.0f);
Device->SetTransform(D3DTS_WORLD,&World);
Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);
Device->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
D3DXMatrixTranslation(&World,1.25f,0.0f,0.0f);
Device->SetTransform(D3DTS_WORLD,&World);
Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
Device->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
Device->EndScene();
Device->Present(0,0,0,0);
但是,如果我從D3DPT_TRIANGLELIST更改爲例如D3DPT_LINELIST它繪製一條線。如果我使用D3DPT_POINTLIST,它僅爲每個DrawPrimite調用繪製一個點(像素)。
感謝您的幫助!
感謝您的回覆。 但ColorVertex是一個結構,並且由於我傳遞了它內部的所有值,所以它應該設置x,y,z和3個不同點的顏色。當應用程序在它們之間劃一條線時,它們一起形成一個三角形? – Araw 2012-07-20 21:41:36
YEs,對不起,我沒有很快回復,但看起來你知道我的意思了 – jcoder 2012-07-24 14:48:02