您的位置:首页 > 其它

把DirectX龙书读薄--大纲

2015-09-11 15:52 134 查看
记得当初大二寒假的时候读了《Windows游戏编程》那本书,我当初是抱着很大的希望去读的,希望可以从中得到修炼成一名合格游戏程序员之道。然而,那个时候的我连接口的定义尚且都搞不清楚,很快我就迷失在纷杂的代码段中,这本书我读了三分之一不到就弃置一旁了。

后来我学习了Unity3D,发现原来做游戏这么简单。后来我又学习了计算机图形学,发现了其实做游戏简单,但是游戏背后的实现要难上加难,仅仅是图形引擎的实现就非常困难。

我读这本书的意义

我认为,无论是作为一名游戏性程序员还是一名游戏引擎程序员,对其实现原理都应该有所掌握。枉论游戏引擎程序员,对于一名合格的游戏性程序员来说,空有操作经验,而没有其深层次的感悟,我觉得很难进步。而且也很枯燥。

因此,我决定先”略读“一下这本DirectX中的龙书——3D游戏开发编程基础

我读这本书的方式

我的时间不太允许我去仔细读这本书,甚至是对实现例程也不太可能一个一个实现。而且,我很担心在代码的细节中失去耐心。我打算将这本书所提到的各个概念、其作用做一个总结。这样,后来若是要精读,这篇文章会成为一个非常好的提纲。

第一部分的基础知识我觉得对我不是很重要,这里先略过。 需要补充再来。

1 初始化 Direct3D

在图形实现中的位置

应用程序=》Direct3D=》HAL=》图形设备


hal相当于一个图形设备的指令集

又由于有些图形设备不支持DX的部分功能,这时需要REF(reference rasterizer device)来模拟实现。

组件对象模型

表面

多重采样

像素格式 存储一个像素信息的数据结构

内存池 资源所在

交换链和页面置换 前台缓存显示在屏幕上,后台缓存是正在被处理的帧

深度缓存 每一个像素都会有一个深度(entry),选出离相机最近的

顶点运算(vertex processing)

Direct3D初始化步骤

获取接口指针

检查设备性能

初始化一个设置项

用设置项来生成一个Device对象

direct3d是对图形设备的操作!

2 绘制流水线

三角形单元 拼凑出各种多面体的模型

索引 点的索引,防止多点重合

虚拟摄像机 定义了可见的空间体积 平截头体 投影窗口一个2d区域 投影平面

局部坐标系=>世界坐标系=>观察坐标=> 背面消隐 =>光照=> 裁剪 =>投影=>视口变换=> 光栅化

3 Direct3D的绘制

使用顶点和索引缓存进行绘制

4 颜色

颜色表示方法 alpha R G B

顶点颜色 和着色

5 光照

环境光 经其他平面反射 到达物体表面

漫射光 方向特定,到达物体表面时会向各个方向均匀反射

镜面光 方向特定,到达物体表面时会向特定方向反射

材质正是建立在对这三种光的处理上的

Diffuse对漫射光的反射率

Ambient 对环境光的反射率

Specular 对镜面光的反射率

Emissive 增强物体的亮度,使其好像可以自己发光

Power 镜面高光点的Sharpness(锐度)

顶点法线

光的反射需要发现。对光的反射的计算是在顶点上完成的,所以需要顶点法线。

光源

电光源

方向光

聚光灯

6 纹理映射

texture mapping,将图形数据映射到三角形单元中去!

多级渐进纹理:对分辨率不同做出的妥协

7 融合技术

将当前要进行光栅化的像素的颜色 与 先前已经光栅化的同一位置的像素的颜色 进行合并

融合方程

融合因子(颜色占最后结果的比重)

透明度

8 模板

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: