1、D3DXMatrixPerspectiveFovLH()
DirectX中投影变换D3DXMatrixPerspectiveFovLH()其实产生的变换矩阵不是将3D物体转换为2D平面画面的变换。实际上是把3D世界的物体变换到(1,1,0) (-1,1,0) (-1,-1,0) (1,-1,0) (1,1,1) (-1,1,1) (-1,-1,1) (1,-1,1)这个小盒子中。在Jim Adams 的著作<Role playing games with DriectX 8.0>和Frank Luna 的著作中<Introduction to 3D Game Programming with DirectX9.0>都把这个变换矩阵讲成从3D到2D的变换。实际上在DirectX中3D到2D的变换是由SDK自己完成的。而我们要做的是把3D世界变换到上面那个小盒子中。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/normallife/archive/2008/12/24/3597214.aspx
2、LPDIRECT3DSURFACE9
多重贴图其实就是先按照基本帖图方法为模型指定帖图,
然后读入第二个帖图调用D3DXLoadSurfaceFromSurface(...)把第二个的部分贴到第一上.
只是D3DXLoadSurfaceFromSurface()函数不能直接操作已经读入帖图文件定向到设备上的纹理对象
Surfaces是什么:
通俗的讲surfaces就是一个二维的矩形平面。在DX9中,与其对应的com接口为IDirect3DSurface9,LPDIRECT3DSURFACE9。
Surfaces的作用:
作为一个矩形平面,surfaces用来在屏幕上显示平面图象,即从文件中读取图象数据呈现给用户
IDirect3DSurface9的使用一般过程:
声明: LPDIRECT3DSURFACE9
创建: CreateOffscreenPlainSurface(…)
获取图象信息: D3DXGetImageInfoFromFile(…)
装载到surfaces中: D3DXLoadSurfaceFromFile(…)
获取back buffer地址: GetBackBuffer(…)
显示: UpdateSurface(…)
释放内存 Release()
3、GetRenderTarget()
将对象渲染到指定目标上
4、GetDepthStencilSurface
以下示例代码显示了如何使用IDirect3DDevice9::GetDepthStencilSurface方法取得设备拥有的深度缓存。
LPDIRECT3DSURFACE9 pZBuffer;
5、 g_pEffect->CommitChanges()
对用通道中的状态设置,通过CommitChanges()更新变换,
6、
m_d3dDevice->GetDepthStencilSurface( &pZBuffer );