终于开始看DX编程了,说了好久了,终于开始看了,呵呵,万事开头难嘛,希望最后能有所收获吧。刚开始看DX初级教程,觉得跟原来学的图形学的只是基本相同,原来是用OPENGL编程,理论知识都是一样的。什么裁减啊,视角啊,还有深度的都一样,开头总是很简单的,我都总结出一个规律了,凡是编程基础教程第一个实例就是什么“HELLOWORD”之类的。小结下DX9的例子吧:
LPDIRECT3D9 m_pD3D; //Direct3D 对象接口指针
LPDIRECT3DDEVICE9 m_pDevice; //设备对象接口
LPDIRECT3DVERTEXBUFFER9 m_pVB;; //顶点缓存区的接口指针
LPDIRECT3DINDEXBUFFER9 m_pIB; //索引缓存区接口 ,节余相同顶点缓存的
LPDIRECT3DDEVICE9 m_pDevice; //设备对象接口
LPDIRECT3DVERTEXBUFFER9 m_pVB;; //顶点缓存区的接口指针
LPDIRECT3DINDEXBUFFER9 m_pIB; //索引缓存区接口 ,节余相同顶点缓存的
记得创建的资源要一一Release()掉哦
D3DPRESENT_PARAMETERS d3dpp; //描述了显示器surface的信息
// m_pD3D->CreateDevice( //创建设备对象,并获取接口IDirect3DDevice9的指针
D3DADAPTER_DEFAULT, //使用缺省的显卡
D3DDEVTYPE_HAL, //指定设备类型为HAL
m_hWnd, //Direct3D窗口的句柄
D3DCREATE_SOFTWARE_VERTEXPROCESSING, //软件顶点处理
&d3dpp, &m_pDevice);
D3DADAPTER_DEFAULT, //使用缺省的显卡
D3DDEVTYPE_HAL, //指定设备类型为HAL
m_hWnd, //Direct3D窗口的句柄
D3DCREATE_SOFTWARE_VERTEXPROCESSING, //软件顶点处理
&d3dpp, &m_pDevice);
m_pDevice->Clear( ... ... ); //用指定颜色清除后备缓存
m_pDevice->CreateIndexBuffer(... ...); //创建索引缓存区,并获取接口LPDIRECT3DINDEXBUFFER9的指针
::D3DXMatrixRotationY( &matWorld, angle ); //计算世界变换矩阵
m_pDevice->SetTransform( D3DTS_WORLD, &matWorld ); //把世界变换矩阵设置到渲染环境,旋转时用
m_pDevice->SetTransform( D3DTS_WORLD, &matWorld ); //把世界变换矩阵设置到渲染环境,旋转时用
D3DXVECTOR3 eye( 0.0f, 3.0f,-5.0f ); //观察点
D3DXVECTOR3 lookat( 0.0f, 0.0f, 0.0f ); //视线目标点
D3DXVECTOR3 up( 0.0f, 1.0f, 0.0f ); //上方向
::D3DXMatrixLookAtLH( &matView, &eye, &lookat, &up ); //计算视角变换矩阵
m_pDevice->SetTransform( D3DTS_VIEW, &matView ); //把视角变换矩阵设置到渲染环境
D3DXVECTOR3 lookat( 0.0f, 0.0f, 0.0f ); //视线目标点
D3DXVECTOR3 up( 0.0f, 1.0f, 0.0f ); //上方向
::D3DXMatrixLookAtLH( &matView, &eye, &lookat, &up ); //计算视角变换矩阵
m_pDevice->SetTransform( D3DTS_VIEW, &matView ); //把视角变换矩阵设置到渲染环境
::D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f ); //计算透视投影变换矩阵
m_pDevice->SetTransform( D3DTS_PROJECTION, &matProj ); //把投影变换矩阵设置到渲染环境
m_pDevice->SetTransform( D3DTS_PROJECTION, &matProj ); //把投影变换矩阵设置到渲染环境
//上面几句是3D观测物体时候要用到的
好了,就总结这么多吧,其他一些琐碎的如画点画面就不累赘了,等在看看书在总结下。养成好习惯^_^