|
立方体,为了简便没有用索引顶点,由于是做天空盒,因此每个立方体的面的纹理都是不同的,本来应该是:
m_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST , 0 , 12);
因为定义了36个顶点,D3DPT_TRIANGLELIST方式下一个primitive包含三个顶点,所以一共是12个primitive。
现在改成了:
for (int fc = 0 ; fc < 6 ; fc++){
//纹理设置
if(m_pTexture != NULL)
{
m_pD3DDevice->SetTexture(0, m_pTexture[fc]);
m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CURRENT);
}
else
{
m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG2);
m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CURRENT);
}
m_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0 + fc * 2, 2);
}
但是发现立方体渲染出错了,变成了不规则物体,顶点相互连不起来,是不是DrawPrimitive写错了?纹理能够看到,应该没问题的。!
|
|