【20090921】C++培训日记-DX初探。。
@_@ 好迷糊。。
DX的几个基本步骤:
- 导入包 隐式使用lib
- 创建全局变量g_d3d, d3dDevice
- 【WinMain:配置WndClass,注册WndClass,创建HWND】
- 初始化d3d,配置Device的parameter,创建Device
- 配置其他图形信息 - -(比如Vertex、Index……)
- 【WinMain:显示HWND,刷新HWND,消息循环(使用PeekMessage,忙碌时处理消息,空闲时渲染】
- 在渲染的BeginScene和EndScene里面加入具体的渲染 - -
- 【WinMain的WndProc:在WM_DESTROY时Release 全局变量】
笔记,FillMode三种模式:
- POINT 点
- WIREFRAME 线框
- SOLID 填充
DrawPrimitive 六种图元(Primitive):
- POINTLIST 点列表
直接渲染各个顶点
- LINELIST 线段列表
按顶点列表,每两个点渲染一条线段,线段数 = 顶点数/2
- LINESTRIP 连续的线段(线段带)
按顶点列表,每两个点间都渲染一条线段,线段数 = 顶点数-1
- TRIANGLELIST 三角形列表
按顶点列表,每三个点渲染一个三角形,三角形数 = 顶点数/3
- TRIANGLEFAN 连续的三角形(三角形扇)
按顶点列表,每三个点间渲染一个三角形,三角形数 = 顶点数-2
由第一个顶点和相邻的两个点组成,
比如使用顶点{0, 1, 2, 3, 4},那么三个三角形分别是{0, 1, 2},{0, 2, 3}和{0, 3, 4}
- TRIANGLESTRIP 连续的三角形(三角形带)
按顶点列表,每三个点间渲染一个三角形,三角形数 = 顶点数-2
连续的两个三角形是首尾相连的,
比如使用顶点集合{0, 1, 2, 3},那么两个三角形分别是{0, 1, 2}和{1, 2, 3}
如果绘制的顶点并非连续,还可以用索引(Index)来记录顶点,如使用顶点1, 3, 4,可以使用索引WORD indics[] = {1, 3, 4},
然后在Render时对device设置indics,此时调用的不再是DrawPrimitive函数,而是DrawIndexedPrimitive函数,带入参数不一样,可以查看:
http://blog.xoyo.com/xiayong/article/116039.shtml 或 http://hi.baidu.com/sxligang/blog/item/4b98e3caabbcc282c8176864.html