说明:本系列是我在学习DX10 过程中的一些翻译和总结,主要内容来自DXSDK(Aug2007) 及NVIDIA,ATI等技术文档。
与其前代 D3D 9 相比,D3D10 的渲染管线有着革命性的变化,它基于全新一代的软件、硬件平台,为下一代的游戏和3D多媒体应用开发提供强大的支持。
软件平台上,D3D10基于Windows Vista 操作系统的Windows Vista Display Driver Model (WDDM),因此只能在Windows Vista系统下运行。如果要考虑跨平台性的问题,参考一下OpenGL3吧。
硬件平台上,目前硬件支持D3D10的显卡只有NVIDIA 公司的GeForce 8系列(包括从高端到低端的8800,8600,8500,8400)和AMD.ATI公司的Radeon HD 2000(2900,2600,2400)系列。
参考链接:
NVIDIA http://www.nvidia.com/object/geforce_family.html
ATI http://ati.amd.com/products/hdseries.html
D3D10在D3D9上增加的新特性主要有:
1. 渲染管线中新增加了几何着色器阶段,几何着色器可以处理整个图元及邻接信息
2. 流输出阶段可以将渲染管线生成的顶点数据输出到内存中。
3. 定义了一些新的对象和样式来减少运行时及驱动程序在验证和处理时的CPU开销。
* 将管线状态封装成不可变的状态对象
* 将着色器常数变量(constant variable)封装成常数缓存。
* 在几何着色器中支持逐图元的材质设置和切换
4. 新的资源类型和格式(如在着色器中可以索引访问的纹理数组)
5. 使用资源视图来分隔资源在内存中的格式和资源的使用、存取方式。也就是使用了Model-View 模式
6. 定义了一套完整的功能集。不再保留对遗留硬件功能的支持,即完全放弃了向下的兼容性。D3D10API只针对D3D10及以上级别的显示硬件。
7. 分层的运行时。在核心层提供基础的功能,而在外网层次提供可选的、拥有辅助开发的功能
8. 完全的HLSL集成,HLSL位于核心层中。所有的着色器程序都使用HLSL编写,都在通用着色器内核中实现。
9. 增加了支持的渲染目标、纹理和采样器的数量。对着色器代码的长度不再有限制。
10. 完整支持:
* 着色器中的整数和位操作
* 在着色器中对深度/模板缓存和对多重采样资源的读回(访问)
* 多重采样 Alpha-to-Coverage(???不懂)