Я хочу нарисовать эту картинку в плоскости.
теперь я пробую буфер вершин, а DrawPrimitive - D3DPT_LINESTRIP. а не эффект я хочу.
так что это более чем эффективно???
Пожалуйста, дайте мне совет. Спасибо.
Я хочу нарисовать эту картинку в плоскости.
теперь я пробую буфер вершин, а DrawPrimitive - D3DPT_LINESTRIP. а не эффект я хочу.
так что это более чем эффективно???
Пожалуйста, дайте мне совет. Спасибо.
Я познакомлю вас с книгой Introduction to 3D programming with DirectX
, в ней подробно описано, как это сделать, в главе 8, разделе 4.
Это может быть вариантом, не оптимальным, но позволит достичь этой сетки.
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;
}
};
Примечание. Это только сетка с линиями, поэтому вам нужно нарисовать сплошную плоскость, чтобы получить желаемый результат.
Вы можете использовать DrawPrimitive
с D3DPT_TRIANGLESTRIP
для самолета. Затем нарисуйте индексированные линии после с помощью D3DPT_LINELIST
с смещением глубины. Таким образом, даже если они будут лежать на самолете, у вас не будет z-файтингов.