zimmerman

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(...)


分类:

技术点:

相关文章:

  • 2021-07-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-11
  • 2021-11-26
  • 2021-10-11
  • 2021-09-27
猜你喜欢
  • 2022-03-07
  • 2022-12-23
  • 2022-12-23
  • 2022-01-13
  • 2022-02-22
  • 2022-12-23
相关资源
相似解决方案