总结

这两天总结从创建一个窗口到纹理、灯光

 

第一: 创建窗口

首先声明一个窗口类结构体对象:

WNDCLASS  wnd;

接着填充各参数。

下一步是:注册窗口

RegisterClass( &wnd);

 

创建窗口 : HWND hwnd = 0;

hwnd = CreateWindow();

显示窗口 ShowWindow();

刷新窗口 UpdateWindow();

这样一个窗口就可以显示了。

 

第二: 初始化D3D

IDirect3D9  *d3d9;

IDirect3DDevice9 *Device;

获得一个IDirect3D9接口

d3d9 = Direct3DCreate9( D3D_SDK_VERSION);

检测硬件顶点处理能力

D3DCAP9 caps;

d3d9->GetDeviceCaps();

 

int vp = 0;

if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)

   vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;

else

   vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;

 

接着填充D3DPRESEN_PARAMETERS结构

D3DPRESENT_PARAMETERS d3dpp;

填充完后 创建设备指针

HRESULT hr = 0;

hr = d3d9->CreateDevice( );

 

第三: 创建顶点

IDirect3DVertexBuffer9 *VB = 0;

IDirect3DIndexBuffer9 *IB = 0;

先创建一个顶点结构体Vertex,

接着创建一个顶点缓冲区 Device->CreateVertexBuffer();

 

Vertex *vertices;

VB->Lock();

将顶点读入顶点缓冲区

VB->Uncock();

索引顶点:

WORD index;

index->Lock();

将顶点读入索引缓冲区

index->Unlock();

 

第四: 放置摄像机

D3DXMATRIX V;

D3DXVECTOR3 position( 0.0f, 0.0f, -5.0f);

D3DXVECTOR3 target( 0.0f, 0.0f, 0.0f);

D3DXVECTOR3 up( 0.0f, 1.0f, 0.0f);

D3DXMatrixLookAtLH( &V, &position, &target, &up) //如果要向右旋转则为RH

投影://将2D图转化为3D图

D3DXMATRIX proj;

D3DXMatrixPerspectiveFovLH( &proj, D3DX_PI * 0.5f, width/height, 1.0f, 1000.0f);

Device->SetTransform( D3DTS_PROJECTION, &proj);

 

 第五: 渲染

首先要清0

Device->Clear();

Device->BeginScene();  //开始渲染

设置资源流: Device->SetSreamSource( );

设置灵活顶点格式 :Device->SetFVF();

设置索引缓冲区: Device->SetIndices();//如果没用索引顶点,就不加

Device->DrawPrimitive()  //这是不用索引顶点。

Device->DrawIndexPrimitive()  //这是用索引顶点渲染

Device->EndScene();  //结束渲染

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值