D3D画线和画面的总结

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)的面时:如下图:


由以上我们可知,画面的时候是不包含右边和下边的线的。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值