【CSDN浅墨】读书笔记4
2013-09-03 12:50
260 查看
浅墨大神CSDN博客专栏:http://blog.csdn.net/column/details/vc-game-programming.html
分为:固定功能渲染流水线、可编程渲染流水线
固定功能渲染流水线:
第一阶段:坐标变换和光照处理(每个对象的顶点从一个抽象的,浮点坐标变换到基于像素的屏幕空间当中)
第二阶段:光栅化处理阶段(将已经完成变换的光照阶段的顶点组织为以点、线、面为基础的图元,应用纹理贴图、颜色属性、设置渲染状态)
注意:渲染流水线中的步骤并不一定都要有,可以省略。
第一阶段可分为:世界变换,取景变换,光照处理,投影变幻,视口变换
世界变换
// 世界变换
D3DXMATRIX matWorld, Rx, Ry, Rz;
D3DXMatrixIdentity(&matWorld);
D3DXMatrixRotationX(&Rx, D3DX_PI * (::timeGetTime() / 1000.0f));
D3DXMatrixRotationY(&Ry, D3DX_PI * (::timeGetTime() / 1000.0f/2));
D3DXMatrixRotationZ(&Rz, D3DX_PI * (::timeGetTime() / 1000.0f/3));
matWorld = Rx * Ry * Rz * matWorld;
g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
取景变换
// 取景变换
D3DXMATRIX matView;
D3DXVECTOR3 vEye(0.0f, 0.0f, -200.0f);
D3DXVECTOR3 vAt(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 vUp(0.0f, 1.0f, 0.0f);
D3DXMatrixLookAtLH(&matView, &vEye, &vAt, &vUp);
g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);
投影变换
// 投影变换
D3DXMATRIX matProj;
D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI / 4.0f, 1.0f, 1.0f, 1000.0f);
g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matProj);
视口变换
// 视口变换
D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = SCREEN_WIDTH;
vp.Height = SCREEN_HEIGHT;
vp.MinZ = 0.0f;
vp.MaxZ = 1.0f;
g_pd3dDevice->SetViewport(&vp);
注意:
struct CUSTOMVERTEX
{
FLOAT x, y, z;
DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE) // FVF灵活顶点格式
设置成未经过第一阶段处理的顶点,也就是消除之前编写的xyzchw改成xyz
分为:固定功能渲染流水线、可编程渲染流水线
固定功能渲染流水线:
第一阶段:坐标变换和光照处理(每个对象的顶点从一个抽象的,浮点坐标变换到基于像素的屏幕空间当中)
第二阶段:光栅化处理阶段(将已经完成变换的光照阶段的顶点组织为以点、线、面为基础的图元,应用纹理贴图、颜色属性、设置渲染状态)
注意:渲染流水线中的步骤并不一定都要有,可以省略。
第一阶段可分为:世界变换,取景变换,光照处理,投影变幻,视口变换
世界变换
// 世界变换
D3DXMATRIX matWorld, Rx, Ry, Rz;
D3DXMatrixIdentity(&matWorld);
D3DXMatrixRotationX(&Rx, D3DX_PI * (::timeGetTime() / 1000.0f));
D3DXMatrixRotationY(&Ry, D3DX_PI * (::timeGetTime() / 1000.0f/2));
D3DXMatrixRotationZ(&Rz, D3DX_PI * (::timeGetTime() / 1000.0f/3));
matWorld = Rx * Ry * Rz * matWorld;
g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
取景变换
// 取景变换
D3DXMATRIX matView;
D3DXVECTOR3 vEye(0.0f, 0.0f, -200.0f);
D3DXVECTOR3 vAt(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 vUp(0.0f, 1.0f, 0.0f);
D3DXMatrixLookAtLH(&matView, &vEye, &vAt, &vUp);
g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);
投影变换
// 投影变换
D3DXMATRIX matProj;
D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI / 4.0f, 1.0f, 1.0f, 1000.0f);
g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matProj);
视口变换
// 视口变换
D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = SCREEN_WIDTH;
vp.Height = SCREEN_HEIGHT;
vp.MinZ = 0.0f;
vp.MaxZ = 1.0f;
g_pd3dDevice->SetViewport(&vp);
注意:
struct CUSTOMVERTEX
{
FLOAT x, y, z;
DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE) // FVF灵活顶点格式
设置成未经过第一阶段处理的顶点,也就是消除之前编写的xyzchw改成xyz
相关文章推荐
- 【CSDN浅墨】读书笔记2
- 【CSDN浅墨】读书笔记3
- 【CSDN浅墨】读书笔记5
- 【CSDN浅墨】读书笔记1<Direct3D基础知识以及Direct3D初始化步骤>
- 试一试CSDN的Blog
- 读书笔记_GDI+程序设计_第五章(图像)(上)
- C++ 的fstream类提供的文件操作[转自http://blog.csdn.net/z2care/archive/2007/05/08/1600965.aspx]
- 11 csdn java 课堂总结
- 《Android内核剖析》读书笔记 第7章 理解Context
- 公告:CSDN博客频道支持Windows Live Writer离线写博客啦
- SQlite数据库的C编程接口(三) 预处理语句(Prepared Statements) ——《Using SQlite》读书笔记 .
- 读书笔记cocos2d-x之新建cocos2d工程
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 跟上时代,我也开通CSDN博客
- 欢迎使用CSDN-markdown编辑器
- 《图解HTTP》读书笔记(10)第10章构建Web内容的技术(关键词:HTTP/)
- visual c++程序员读书笔记
- 用Windows Live Writer写CSDN日志
- [推荐] 哈佛大学凌晨4点半的景象(zz from :http://topic.csdn.net/u/20100806/09/3D19DC5F-ACFF-49A1-993A-018F47FCDB77.html)