2010-06-20 31 views
1

我需要使用DrawPrimitiveUP畫線,我需要它使用我定義的結構中的顏色值。從代碼如何使用DrawPrimitiveUP,以便使用我定義的結構中的顏色值?

重要片段:

struct PointVertexColor 
{ 
float x, y, z; // Position 
DWORD color; //Colour 
}; 

#define D3DFVF_PointVertexColor (D3DFVF_XYZ | D3DFVF_DIFFUSE) 

PointVertexColor myLines[1024]; 

device->DrawPrimitiveUP(D3DPT_LINELIST, myLinesCount, myLines, sizeof(PointVertexColor)); 

我有一個點光源組,照明啓用和環境照明還。

問題是,如果我設置了材質,它將使用材質顏色,而不是來自我的數據結構中的材質。我該如何設置它,以便使用DWORD顏色,然後將其設置爲使用材質以供後面的代碼使用?

回答

0

問題很明顯,如果你知道它 - 你不能同時使用頂點顏色和光照。解決方案是禁用該部分代碼的照明,然後重新啓用它。

希望它可以幫助有同樣問題的人。

+1

其實,你可以使用頂點顏色和照明。請參閱渲染狀態D3DRS_DIFFUSEMATERIALSOURCE,例如 – Bahbar 2010-06-21 13:46:16

+0

嘗試過,但它似乎沒有效果(顏色/材質),也許我還有其他錯誤。 – Marten 2010-06-21 14:31:25

相關問題