|
|
如果渲染一个TEX,没问题,顶点格式FVF是XYZRHW和TEX1
如果渲染一个单纯顶点色的面,也没问题,FVF是XYZRHW和DIFFUSE
但是我一个界面即要有TEX,又要有顶点色的面。似乎后者就显示不正常了……
我自作聪明用switch选择一下,分两种顶点格式,两种顶点缓冲器,但运行后TEX是对的,顶点色那个面颜色不对。不渲染TEX的话,顶点色就正常了
这是render部分的简单代码,高手帮忙指点一下吧……研究几天而不得……
switch(m_nMode)
{
case MODE_HOMOCHROMY:
m_pD3DDevice->SetFVF(m_dwFVF);
m_pD3DDevice->SetStreamSource(0, m_pVertexBuffer,0 ,sizeof(VERTEX_HOMO));
m_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
break;
case MODE_TEX:
m_pD3DDevice->SetTexture( 0, m_pTexture );
m_pD3DDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
m_pD3DDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
m_pD3DDevice->SetFVF(m_dwFVF);
m_pD3DDevice->SetStreamSource(0, m_pVertexBuffer,0 ,sizeof(VERTEX_TEX));
m_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
} |
|