DirectX 基础总结笔记
即显卡。指硬件及其驱动程序
2、 设备 device
在应用中,我们需要创建多个针对适配器的连接,每个连接能够处理目前的现代图形处理器可以制作的3D魔幻效果。每个连接称为一个设备。
Device是指用来访问特定窗口并在该窗口上绘图的主要对象。
有3种不同的设备
1 Hardware(hardware abstraction layer ,HAL):可以直接访问硬件的加速特性
2 Reference(Reference Rasterizer): 具有DirectX函数的大部分特征,不依赖硬件,但很慢,适应于测试
3 Software(Software device):除非使用插件程序(plug-in),一般不用
3、DirectX pipeline
图形显示卡的处理分为几个不同的阶段,这些阶段通常分为3部分。
第一部分:transform and lighting stage(T&L)
将定义的坐标系下的3D模型顶点转换到一个与该模型所处的视图(或场景)相对应的坐标系,最后转换到该视图的一个特定视口下。在这个过程中,图形pipeline将依据场景中的光源并使用相关技术改变顶点的色彩和亮度。这个阶段通常称为transform and lighting stage(T&L).
第二部分:裁切阶段
裁减那些不会出现在观察者最终看到的图像中的部分图像。
第三部分:rasterization
产生所有的魔幻效果并把3D视图转换到屏幕上可以显示的2D图像
Pixel Shading技术允许基于每个像素来实施特殊的光亮效果。
3、 显示模式
定义那些保存屏幕状态基本信息的对象(DisplayMode类)。基本信息包括:宽度,高度,刷新率和一个格式标识符(关于显示器如何管理色彩显示的额外信息)
4、3D坐标系
使用左手坐标系。Z值越大,对象就越远
5、 投影
有两种类型的投影
一:透视投影
二:正交投影(水平投影):Z轴将会被忽略,主要用于2D
Direct3D提供了6个主函数允许我们为游戏制定一种投影方式,这些函数将返回一个矩阵用以计算转换。
Matrix.OrthoRH, Matrix.OrthoLH: 定义了一个正交投影(RH 右手坐标系,LH左手坐标系)。函数将接受视口的宽度,高度和可观察的z轴的范围
Matrix.PerspectiveRH, Matrix.PerspectiveLH: 返回一个针对透视投影的变换矩阵,传递视口的宽度,高度和z轴的可见距离
Matrix.PerspectiveFovRH, Matrix.PerspectiveFovLH: 返回一个透视投影的变换矩阵,传递一个视角和z轴距离。该视角与视野范围(FOV)相应弧度向对应。
6、 矩阵变换
Device具有3个特殊的属性:
1 .Transform.Projection 用来接收投影矩阵
2 .Transform.World 表明在3D世界进行变换
3 .Transform.View 指出了取景窗位置
7、定位camera
通过定位camera,以便从不同点观测同样的场景。DirectX的camera指观测矩阵(View Matrix). 可以计算观测矩阵并把它设为.Transform.View属性,或使用helper函数的Matrix.LookAtLH, Matrix.LookAtRH. 这些函数定义了观测位置和观测方向。有3点需要注意:camera所处的位置,camera正在观测的3D位置,当前的向上方向(通常是y轴方向)
8、 Drawing Primitives
定义一个3D对象所需的顶点集合。
Direct3D创建一组简单三角形的步骤:
1 创建一个顶点缓冲区
2 依据定义的顶点类型,用对象的每个顶点填充缓冲区。
3 使用希望的primitives类型(PointList,TriangleList)把缓冲区的内容绘制到设备上。
图形pipeline显示的每个场景最终都是三角形。系统将删除那些再culling进程中不可见的三角形,这个进程成为backface culling
9、 deviceReset事件
每当设备重新设置时,必须创建新的顶点缓冲区。实现的最佳方法是为DeviceReset事件注册一个事件处理程序
device.DeviceReset += new System.EventHandler(this.OnResetDevice);
posted on 2006-10-15 20:57 Linear Progamming 阅读(1403) 评论(0) 编辑 收藏 举报