画线

2009年4月17日:

         今天学习了如何画线,基本的框架和前面的差不多,这里把一些关键的地方描述一下。要画线需要知道点的位置,所以里面有一个LPDIRECT3DVERTEXBUFFER9 g_VertexBuffer = NULL;这样的结构,这个结构是 顶点缓存对象,用于保存要在屏幕上显示的几何图形数据,后面定义了

struct stD3DVertex
{
  float x, y, z, rhw;
  unsigned long color;
};这个是点的数据结构,位置和颜色组成,接着定义

#define D3DFVF_VERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)这个是:定点格式标识符,也可称为灵活顶点格式。在后面的程序中就表示顶点了。要画线我们定义了InitializeObjects()这样的一个函数,里面定义了点的位置

unsigned long col = D3DCOLOR_XRGB(255, 255, 255);

  // Fill in our structure to draw an object.
  // x, y, z, rhw, color.
  stD3DVertex objData[] =
  {
  { 420.0f, 150.0f, 0.5f, 1.0f, col, },
  { 420.0f, 350.0f, 0.5f, 1.0f, col, },
  { 220.0f, 150.0f, 0.5f, 1.0f, col, },
  { 220.0f, 350.0f, 0.5f, 1.0f, col, },
  };接着创建了顶点缓存的分配

if(FAILED(g_D3DDevice->CreateVertexBuffer(sizeof(objData), 0,
  D3DFVF_VERTEX, D3DPOOL_DEFAULT, &g_VertexBuffer,
  NULL))) return false;
接着锁定顶点缓存if(FAILED(g_VertexBuffer->Lock(0, sizeof(objData),
  (void**)&ptr, 0))) return false;这样就可以使用了操作该指针,(void**)&ptr,是包含顶点数据的内存的指针,一旦得到一个指向内存的指针,就可以将数据复制到缓存中,复制数据的方法是 memcpy(ptr, objData, sizeof(objData));
创建完顶点缓存后就可以将其渲染到屏幕上线先用函数

g_D3DDevice->SetStreamSource(0, g_VertexBuffer, 0,sizeof(stD3DVertex));将顶点缓存设置为渲染流,这个函数的意思就是说把这个顶点缓存设置成渲染流,然后就可以进行画图了,第三个参数表示偏移量一般为0,就是从缓冲起始位置绘制,就是绘制缓冲中所有的顶点,一般用不着偏移 ,只是提供灵活性。 完成流设置后,就可以设置顶点格式FVF,这样DirectX就可以知道正在发送的数据格式。左后一个函数g_D3DDevice->DrawPrimitive(D3DPT_LINELIST, 0, 2);表示画图,参数表示画的类型,索引和个数。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值