对于DrawPrimitive函数,MSDN中是这样的
HRESULT DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType,
UINT StartVertex,
UINT PrimitiveCount
);
第一个参数是一个标记,它通知 Direct3D 绘制哪种类型的物件;
第二个参数是第一个顶点的索引;
第三个参数通知绘制的物件的数目;
其中D3DPRIMITIVETYPE 为枚举型,格式
typedef enum D3DPRIMITIVETYPE
{
D3DPT_POINTLIST = 1,
D3DPT_LINELIST = 2,
D3DPT_LINESTRIP = 3,
D3DPT_TRIANGLELIST = 4,
D3DPT_TRIANGLESTRIP = 5,
D3DPT_TRIANGLEFAN = 6,
D3DPT_FORCE_DWORD = 0x7fffffff,
} D3DPRIMITIVETYPE, *LPD3DPRIMITIVETYPE;
D3DPT_POINTLIST
点列表:将一连串的顶点作为像素进行绘制
D3DPT_LINELIST
线列表:彼此孤立(彼此没有发生连接)的一些直线
D3DPT_LINESTRIP
线带:一连串连接的直线。每条直线都是从前一个顶点到当前顶点绘制而成,很像连接点
D3DPT_TRIANGLELIST
三角形列表:这个设置比较简单,索引区每隔三个一个三角形。
D3DPT_TRIANGLESTRIP
三角形带:索引区中每三个一个三角形,前一个三角形的后两个顶点和后一个三角形的前两个顶点重合。即绘制的第一个三边形使用3个顶点,后面绘制的每一个三角形只使用一个额外的顶点。
D3DPT_TRIANGLEFAN
三角扇形:索引区中第一个点为公共顶点,后面依次展开,每两个点和公共定点组成三角形。
D3DPT_FORCE_DWORD
这个好像很少用到,好像与什么32位有关,具体啥意思不是很清楚,想知道可以看下面MSDN英文原文
具体实现代码如下:
//从第0个点开始用D3DPT_POINTLIST模式渲染6个点
g_pd3dDevice->DrawPrimitive(D3DPT_POINTLIST,0,6);
//从第0个点开始用D3DPT_LINELIST 模式渲染3条线
g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST,0,3);
//从第0个点开始用D3DPT_LINESTRIP 模式渲染5条线
g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST,0,5);
//从第0个点开始用D3DPT_TRIANGLELIST 模式渲染2个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);
//从第0个点开始用D3DPT_TRIANGLESTRIP 模式渲染4个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,4);
当第一个参数是D3DPT_TRIANGLE,渲染三角型图元时,顶点按照顺时针方向排列才能正确渲染
//从第0个点开始用D3DPT_TRIANGLEFAN模式渲染3个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,3);
所有计算机中复杂的图形都是用这几种点的渲染方式实现的,虽然简单但是很重要。通过这次的内容,我们理论上就能够把我们想显示的任何平面的图像都显示到D3D窗口里了
HRESULT DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType,
UINT StartVertex,
UINT PrimitiveCount
);
第一个参数是一个标记,它通知 Direct3D 绘制哪种类型的物件;
第二个参数是第一个顶点的索引;
第三个参数通知绘制的物件的数目;
其中D3DPRIMITIVETYPE 为枚举型,格式
typedef enum D3DPRIMITIVETYPE
{
D3DPT_POINTLIST = 1,
D3DPT_LINELIST = 2,
D3DPT_LINESTRIP = 3,
D3DPT_TRIANGLELIST = 4,
D3DPT_TRIANGLESTRIP = 5,
D3DPT_TRIANGLEFAN = 6,
D3DPT_FORCE_DWORD = 0x7fffffff,
} D3DPRIMITIVETYPE, *LPD3DPRIMITIVETYPE;
D3DPT_POINTLIST
点列表:将一连串的顶点作为像素进行绘制
D3DPT_LINELIST
线列表:彼此孤立(彼此没有发生连接)的一些直线
D3DPT_LINESTRIP
线带:一连串连接的直线。每条直线都是从前一个顶点到当前顶点绘制而成,很像连接点
D3DPT_TRIANGLELIST
三角形列表:这个设置比较简单,索引区每隔三个一个三角形。
D3DPT_TRIANGLESTRIP
三角形带:索引区中每三个一个三角形,前一个三角形的后两个顶点和后一个三角形的前两个顶点重合。即绘制的第一个三边形使用3个顶点,后面绘制的每一个三角形只使用一个额外的顶点。
D3DPT_TRIANGLEFAN
三角扇形:索引区中第一个点为公共顶点,后面依次展开,每两个点和公共定点组成三角形。
D3DPT_FORCE_DWORD
这个好像很少用到,好像与什么32位有关,具体啥意思不是很清楚,想知道可以看下面MSDN英文原文
具体实现代码如下:
//从第0个点开始用D3DPT_POINTLIST模式渲染6个点
g_pd3dDevice->DrawPrimitive(D3DPT_POINTLIST,0,6);
//从第0个点开始用D3DPT_LINELIST 模式渲染3条线
g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST,0,3);
//从第0个点开始用D3DPT_LINESTRIP 模式渲染5条线
g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST,0,5);
//从第0个点开始用D3DPT_TRIANGLELIST 模式渲染2个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);
//从第0个点开始用D3DPT_TRIANGLESTRIP 模式渲染4个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,4);
当第一个参数是D3DPT_TRIANGLE,渲染三角型图元时,顶点按照顺时针方向排列才能正确渲染
//从第0个点开始用D3DPT_TRIANGLEFAN模式渲染3个三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,3);
所有计算机中复杂的图形都是用这几种点的渲染方式实现的,虽然简单但是很重要。通过这次的内容,我们理论上就能够把我们想显示的任何平面的图像都显示到D3D窗口里了