Welcome to zimmerman's blog!

初学->进阶->高手 有很长的路要走
美静->若英->我说 有许多的歌可听

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.D3D的创建过程:(InitD3D)
D3D对象g_pD3D通过Direct3DCreate9(D3D_SDK_VERSION)创建
而后创建D3D设备g_pd3dDevice由g_pD3D->CreateDevice(...)创建.

2.绘图: (Render)
先清除后置缓冲并设置为背景色用g_pd3dDevice->Clear(...)
渲染:  SUCCEEDED(g_pd3dDevice->BeginScene())
       g_pd3dDevice->EndScene();

最后显示后置缓冲画面:
        g_pd3dDevice->Present(...);

3.绘图操作的安排(利用消息循环中空闲时间)
常将Render()函数放于WinMain()消息循环内部.
获取消息用PeekMessage(...) ----相比于GetMessage(),PeekMessage()在未得到消息时仍将占用一段时间片.即可利用此间空闲时间.

if(PeekMessage(...)){
    TransalteMessage(...);
    DispatchMessage(...);
}
else{
    Render();    //利用空闲时间绘图
}

4.顶点缓冲
用户定义自由顶点格式(FVF)而后通过g_pd3dDevice->CreateVertexBuffer(...)创建顶点缓冲
疑问手:  顶点缓冲的创建是否就是申请一片内存空间? 还有其它什么作用在这个函数里?

创建顶点缓冲有一个指向顶点的指针输出..
(注意这里传入的是VOID**,为什么要这样,想知道的话好好了解一个函数参数的拷贝,呵呵)

锁住内存区?: g_pVB->Lock(...)
然后memcpy(...)将自己定义的一个顶点数组拷贝过来.
再UnLock()

怎么绘制出顶点缓冲内的东西?
在Render()里,BeginScene()后作如下操作:
   1) 使包含顶点信息的顶点缓冲绑定到一个设备数据流  g_pd3dDevice->SetStreamSource(...)
   2) 向D3D指定顶点着色信息,大多数情况只指定FVF格式.   g_pd3dDevice->SetFVF(...)
   3) 调用输出几何信息的DrawPrimitive()函数     g_pd3dDevice->DrawPrimtive(...)


posted on 2007-11-07 01:54  zim.NET  阅读(774)  评论(0编辑  收藏  举报