d3d画线代码:
定义顶点结构体:
typedef struct
{
FLOAT x,y,z; // vertex untransformed position
FLOAT rhw; // eye distance
D3DCOLOR diffuse; // diffuse color
FLOAT tu, tv; // texture relative coordinates
} CUSTOMVERTEX;
定义顶点的代码:
CUSTOMVERTEX vertices[] = {
{ 1.0f, 1.0f , 0.0f, 0.0f,D3DCOLOR_ARGB(255, 255, 0, 0),0.0f,1.0f },
{ 9.0f , 1.0f , 0.0f, 0.0f,D3DCOLOR_ARGB(255, 255, 0, 0),1.0f,1.0f },
}
画线代码:
m_pDirect3DDevice->BeginScene();
//Binds a vertex buffer to a device data stream.
m_pDirect3DDevice->SetStreamSource( 0, m_pDirect3DVertexBuffer,0, sizeof(CUSTOMVERTEX) );
//Sets the current vertex stream declaration.
lRet = m_pDirect3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
m_pDirect3DDevice->DrawPrimitive(D3DPT_LINESTRIP, 0, 1);
m_pDirect3DDevice->EndScene();
以上代码只会画一条有8个像素的线。
我这里假设有4个点:左上点A(1,1) 右上点B(9,1) 右下点C(9,9) 左下点D(1,9)
1.对画线的总结:
a.当我们画一条点 A->B 的线时:是一条包含8个像素的线,包含点A但不包含点B。
b.根据以上规则可以得知,如果我们画一条点 A->B->C->A 的线条时。如下图:
画 A->B 的线条时: 包含点A不包含点B
画 B->C 的线条时:包含点B不包含点C
话 C->A 的线条时:包含点C不包含点A
这样就得出一个包含所有点在内的边框。
2.对画面的总结:
a.当我们画一个点(A->B->C)的面时:如下图:
b.当我们话一个点(A->C->D)的面时:如下图:
c.由以上2个面的组合,当我们画一个点(A->B->C->D)的面时:如下图:
由以上我们可知,画面的时候是不包含右边和下边的线的。