Direct3D学习笔记二:渲染管线
来源:互联网 发布:携程幼儿园 知乎 编辑:程序博客网 时间:2024/05/11 20:37
前言:一个场景可能是多个物体或模型的组合。一个物体可能可以由一个三角形物体来表示。
由三角形网格建立一个物体,我们称之为建模。
顶点格式:创建一种自定义的顶点结构:
struct ColorVertex
{
float _x,_y,_z;
DWORD _color;
}
#define FVF_COLOR (D3DFVF_XYZ|D3DFVF_DIFFUSE)
位置,颜色。
Struct NormalVertex
{
float _x,_y,_z;
float _nx,_ny,_nz; //法线向量
float _u,_v; //纹理坐标
}
#define FVF_NORMAL_TEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)
三角形:三角形是构建3D物体的基本图形。 Vertex vertexList
索引: 创建一个顶点列表和一个索引列表。顶点列表包括所有不重复的列表,索引列表则用顶点列表定义的值来表示每个
三角形的构造方式。 DWORD IndexList[]
虚拟摄像机:将3D世界转换为2D的世界。在3D世界里面摄像机被放置和定向并定义其可视体。
可视体:由可视角度 Vertical Field of View Angle. 前裁面 Near Plane. 后裁面 Far Plane. 定义一个平截头
投影窗口 Projection Window 3D表示的投影平面一般为Z = 1 的平面。
渲染管线:
Local Space -> World Space -> View Space -> BaceFace culling - > Lighting -> Clipping -> projection
-> viewport space ->Rasterization
IDirect3DDevice9:SetTransform 方法来提供变幻矩阵。如:IDirect3DDevice->SetTransform(D3DDTS_WORD,&wordMatrix);
本地空间:又称建模空间,它是我们定义物体三角行列的坐标系。
世界空间:把我们所建模的物体放到世界空间里面去。
视图空间:将摄像机平移到世界坐标系的原点并且把它的方向朝向Z轴的的正方向。
D3DXMATRIX *D3DXMatrixLookAtLH(
D3DXMATRIX* pOut,
const D3DXVECTOR3* pEye, //摄像机在世界坐标系的位置
const D3DXVECTOR3* pAt, //摄像机的观察点
const D3DXVECTOR3* pUp //3D世界的上方向。通常Y轴的正向方向。
);
IDirect3DDevice->SetTransform(D3DDTS_VIEW,&V);
背面挑选:D3D通过挑选背面多边形来提高效率。
IDirect3DDevice->SetRanderState(D3DRS_CULLMODE,value)
value:D3DCULL_NONE,D3DCULL_CW顺时针三角形,D3DCULL_CCW你是真三角形。
Lighting:调节光照效果。
Clippling: 完全包含,部分在外,完全在外。
投影Projection:3D场景转换为2D场景表示。
D3DXMATRIX* D3DXMatrixPerspectiveFovAtLH(
D3DXMATRIX* pOut,
FLOAT* fovY, //垂直区域可视角度
FLOAT* Aspect, //Aspect=screanWidth/screanHeight
FLOAT* zn, //近面
FLOAT* zf //远面
);
最后IDirect3DDevice->SetTransform(D3DTS_PROJECTION,&Proj);
视口变幻:变幻可见窗口。
struct _D3DVIEWPORT9{
DWORD X,
DWORD Y,
DWORD Width,
DWORD Height,
DWORD MinZ, //最小深度缓冲值
DWORD MaxZ, //最大深度缓冲值
}D3DVIEWPORT9
光栅化:显示每个三角形的颜色值。
- Direct3D学习笔记二:渲染管线
- Direct3D学习笔记:渲染管线
- Direct3D渲染管线简介
- Direct3D渲染管线
- DirectX11学习笔记二:DirectX管线渲染过程
- Direct3D 11渲染管线总结
- Direct3D学习笔记二
- 引擎系列学习【二】图形渲染管线
- Introduction to 3D Game Programming with DirectX 11学习笔记 5 渲染管线(二)
- Shader编程学习笔记(二)—— Shader和渲染管线
- Shader编程学习笔记(二)—— Shader和渲染管线
- Shader编程学习笔记(二)—— Shader和渲染管线
- Shader编程学习笔记(二)—— Shader和渲染管线
- Shader编程学习笔记(二)—— Shader和渲染管线
- OpenGL学习笔记(二):OpenGL语法、渲染管线以及具体实现过程详解
- 【D3D11游戏编程】学习笔记七:3D渲染管线
- 【Unity Shaders】学习笔记——Shader和渲染管线
- 【Unity学习笔记】——基础篇:渲染管线
- VI reference
- CS/BS
- formid问题的解决
- 太让我无题了
- 为什么使用会话bean
- Direct3D学习笔记二:渲染管线
- 报道
- 编写一个截取字符串的函数
- ASP.NET中文件上传下载方法集合
- 关于java
- Eclipse 3.4版本中无法更新Available Software 的问题
- 使用CSS处理表格边框样式化(转帖)
- 正则表达式
- 自学Flex