我想绘制该图片的平面。
现在我尝试顶点缓冲区,DrawPrimitive是D3DPT_LINESTRIP。但不是我想要的效果。
所以任何超过有效的方式???
请给我一些建议。谢谢。答案 0 :(得分:1)
我会给你介绍一本书Introduction to 3D programming with DirectX
,它很棒
有关如何在第8章第4节中执行此操作的详细信息。
答案 1 :(得分:1)
这可能是一个选项,不是最佳选择,但会实现网格
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;
}
};
注意:只有一个带有线条的网格,所以你需要绘制一个实体平面,以便得到你想要的结果。
答案 2 :(得分:0)
您可以将DrawPrimitive
与D3DPT_TRIANGLESTRIP
一起用于飞机。然后在D3DPT_LINELIST
之后绘制带有深度偏差的索引线。这样,即使他们躺在飞机上,你也不会得到任何z战斗。