2013-07-23 61 views

回答

0

您可以使用DrawPrimitiveD3DPT_TRIANGLESTRIP作爲飛機。然後用D3DPT_LINELIST繪製索引線,深度偏差。這樣,即使他們躺在飛機上,你也不會得到任何z戰鬥。

1

我將向你介紹一本書Introduction to 3D programming with DirectX,它有一個很大 細節上如何做到這一點在第8章第4節

1

這可能是一種選擇,並不是最佳的,但會achive該網格

void DrawGrid (float32 Size, CColor Color, int32 GridX, int32 GridZ) 
{ 
    // Check if the size of the grid is null 
     if(Size <= 0) 
       return; 

    // Calculate the data 
    DWORD grid_color_aux = Color.GetUint32Argb(); 
    float32 GridXStep = Size/GridX; 
    float32 GridZStep = Size/GridZ; 
    float32 halfSize = Size * 0.5f; 

    // Set the attributes to the paint device 
    m_pD3DDevice->SetTexture(0,NULL); 
    m_pD3DDevice->SetFVF(CUSTOMVERTEX::getFlags()); 

    // Draw the lines of the X axis 
    for(float32 i = -halfSize; i <= halfSize ; i+= GridXStep) 
    { 
    CUSTOMVERTEX v[] = 
     { {i, 0.0f, -halfSize, grid_color_aux}, {i, 0.0f, halfSize, grid_color_aux} }; 

    m_pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST,1, v,sizeof(CUSTOMVERTEX)); 
    } 

    // Draw the lines of the Z axis 
    for(float32 i = -halfSize; i <= halfSize ; i+= GridZStep) 
    { 
    CUSTOMVERTEX v[] = 
    { {-halfSize, 0.0f, i, grid_color_aux}, {halfSize, 0.0f, i, grid_color_aux} }; 

    m_pD3DDevice->DrawPrimitiveUP(D3DPT_LINELIST,1, v,sizeof(CUSTOMVERTEX)); 
    } 
} 

的CUSTOMVERTEX結構:

struct CUSTOMVERTEX 
{ 
     float32 x, y, z; 
     DWORD color; 
     static unsigned int getFlags() 
     { 
       return D3DFVF_CUSTOMVERTEX; 
     } 
}; 

注:僅與線網格,所以你需要畫一個堅實的平面上,爲了只要你想得到像結果一樣的樣子。