1、 我们可以设置第四个参数w ,当w设置为1时,为了让点可以恰当的转变;当w设置为0时,为了防止向量被平移。
2、 一个平面(n,d)可以被当做一个4d向量来交换,将这个4D向量乘期望的变换矩阵的逆矩阵就可以了。
3、顶点操作
并非所有的显卡都支持顶点支持。
技巧:若我们开发有一些新的,高级的特性的程序,在使用前我们总是先检测硬件是否支持这些特性。
如果一个应用程序在你的机子上不能运行,说明它用到一些特性可能你的显卡并不支持,可以试试把设备类型换为REF。
4、RER DEVICE
如果想把一些你设备不支持的Direct3D函数写入程序。为了实现这个特性,我们可以借助REF设备,它用软件模拟了所有的DIrect3D API。这些
允许你写入并测试那些你的显卡不支持的特性。
5、COM
com,是一种能使DIrectX独立于编程语言和具有向下兼容的技术。我们通常把com当做一个接口,你可以把它当做达到某种目的的c++类来使用。我们需要明白一件事情就是,我们通过某个特殊的COM接口的函数或指针获得了一个COM接口指针,而不是我们通过c++的新关键字来创建它。当使用完某个接口后,调用它的Realease方法比直接Delete它更好,com对象具有他们自己的内存。
6、内存池
表面和其他一些Direct3D资源被放在多种内存池中。内存池的种类由D3DPOOL枚举类型的一个成员来指定。可用到的内存池由以下几种:
D3DPOOL_DEFAULT -----------表示Direct3D将根据资源的类型和用途把他们放在最合适的地方。内存池中的资源必须要在IDirect3DDevice9::Resect
被调用之前销毁掉,丙炔再次使用时必须重新初始化。
D3DPOOL_MANAGED ----------资源将被放置在能由Direct3D管理的受控内存中,也就是说他们会按设备的需要被移动到显存或者AGP内存中。--------另外,当应用程序访问和改变自已时它先把这些资源拷贝到系统内存中,当需要时Direct3D会自动把他们拷贝到显存中。
D3DPOOL_SYSTEMMEM ----------指定资源放在系统内存中。
D3DPOOL_SCRATCH --------指定资源放在系统内存中
7、交换链和页面切换
Direct3D通常创建2-3个表面组成一个集合,即为
交换链,通常由IDirect3DSwapChain接口来表示。
交换链及页面切换技巧被用作使两帧动画之间过度更平滑。
8、索引
3D物体的三角形经常有多个公用顶点vertex,虽然现在仅有2个点被重复使用,但是当要表现一个更精细更复杂的模型的是很,重复顶点数就会变得很大。
为了解决这个问题,我们引入了一个索引的概念(indices),它的工作方式:我们创建一个顶点列表和一个索引列表。顶点列表包含所有不重复的顶点,索引列表中用顶点列表中定义的值来表示一个三角形的构造方式。
索引列表则定义顶点列表中的顶点是如何构造这2个三角形的。