繪製函數
VOID Render()
{
g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(10,10,100),1.0f,0);
if(SUCCEEDED(g_pd3dDevice->BeginScene()))
{
g_pd3dDevice->SetStreamSource(0,g_pVB,0,sizeof(CUSTEMVERTEX));
g_pd3dDevice->SetFVF(D3DFVF_CUSTEMVERTEX);
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);
g_pd3dDevice->EndScene();
}
g_pd3dDevice->Present(NULL,NULL,NULL,NULL);
}
這裏我們的DrawPrimitive是採用了D3DPT_TRIANGLELIST方式從第0個頂點開始往後渲染了1次。我們就得到了一個三角形。
我們再看看下面的定義:
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, /* force 32-bit size enum */
} D3DPRIMITIVETYPE;
共有D3DPT_POINTLIST、D3DPT_LINELIST、D3DPT_LINESTRIP、D3DPT_TRIANGLELIST、D3DPT_TRIANGLESTRIP、D3DPT_TRIANGLEFAN這幾種頂點渲染方式,從字面意思就能理解是怎麼回事。
具體實現代碼如下:
//從第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)
;
//從第0個點開始用D3DPT_TRIANGLEFAN模式渲染3個三角形
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,3);
所有計算機中複雜的圖形都是用這幾種點的渲染方式實現的,雖然簡單但是很重要。通過這次的內容,我們理論上就能夠把我們想顯示的任何平面的圖像都顯示到D3D窗口裏了