Direct3D基本概念介绍
发表于2018-02-28
Direct3D是一种底层绘图API,它可以让我们可以通过3D硬件加速绘制3D世界。从本质上讲,Direct3D提供的是一组软件接口,我们可以通过这组接口来控制绘图硬件。为了让大家可以更加熟悉Direct3D,本篇就为大家介绍下Direct3D的基本概念。
1:之所以,计算机图形学一般用三角形绘制图形,是因为三角形,三个顶点是共面的,由于计算机渲染共面的顶点,比绘制不共面的顶点效率要高,所以三角形成了图形学的基础。
2:索引,顶点列表是包含了全部独立顶点,索引列表包含了指向顶点列表的索引。
顶点列表是:v0,v1,v2,v3。用索引列表可以表示两个三角形: 0,1,2 0,2,3。
3:转换坐标系是通过转换矩阵进行的。
4:取景变换是指:将摄像机的光轴与世界坐标系的z轴一致,摄像机的原点放置在世界坐标系的原点中。因为场景中的各个物体是相对于世界坐标系放置的,当摄像机移动时,物体自然会移动,那么就保持与摄像机位置一致。
5:背面消隐,每个多边形都有两个侧面,正面和背面,多边形的背面都是不可见的。这是由于场景中的物体都是封闭体。这叫背面消隐。
在变换角度之后,从墙的背面观察茶壶,强背面不能显示。
6:透视投影:产生近大远小的投影,将三维场景表示为二维平面。构成场景的3D物体在自己的局部坐标系中进行自身顶点参数的定义,在变换到世界坐标系中时,为了投影,投射,裁剪的方便,还需要将其变换到观察坐标系中。在光栅化阶段,最终显示2D图像,每个像素的值。
7:用顶点缓存和索引缓存而不用数组进行存储是因为前者可以存放在显存中,而数组是放在内存中的。
8:UV就是纹理怎么贴在模型上的一种映射,没有材质模型是不能被渲染的。材质包含一个shader和其属性值的封装。因此,不同材质可以共享相同的shader,赋予不同的数据。
9:图形软件库分两种:Direct3D和OpenGL。
10:在CPU编程下,我们需要是抽象出一个类,再实例化出类的对象,通过对象来进行逻辑上不相关数据的处理。而在GPU编程中也有类似的概念,Shader相当于类,当我们需要对某一具体物体使用此shader的定义时,就需要实例化此shader,从而得到一个对象。通过这个对象可以把同一个shader的含义赋予不同的具体内容,比如贴图,颜色等。
11:D3D的初始化分为这几个步骤:
A:获取IDirect3D9指针:是用来获取物理硬件设备的信息并创立接口:IDirect3DDevice9。
B:检查是否支持顶点运算。
C:初始化结构D3DPRESENT_PARAMETER结构的一个实例,这个实例中包含了很多创建IDirect3DDevice9接口的变量。
D:利用已经初始化的D3DPRESENT_PARAMETER结构创建IDirect3DDevice9对象。