WEB开发网
开发学院软件开发VC MFC架构下的DirectX8 阅读

MFC架构下的DirectX8

 2010-05-25 20:36:05 来源:WEB开发网   
核心提示:第四章 画索引三角形(DX8MFC3)上一章的画三角形方式运行效率是较低的,而实际上我们都会使用DrawIndexedPrimitive()而不是DrawPrimitive(),MFC架构下的DirectX8(5),想一想,如果要画两个相连的三角形,设置你的帖图:D3DXCreateTextureFromFile(pI

第四章 画索引三角形

(DX8MFC3)

上一章的画三角形方式运行效率是较低的,而实际上我们都会使用DrawIndexedPrimitive()而不是DrawPrimitive()。想一想,如果要画两个相连的三角形,共有四个顶点。用DrawIndexedPrimitive()画要画四个顶点,而用DrawPrimitive()画则要画六个顶点。

如果你可以顶点建立索引,你就可以用DrawIndexedPrimitive()画三角形了。我们可以为一个三角形建立这样的索引:

WORD indices[] = { 0, 1, 2 };

它表示三角形中,第一个顶点对应于顶点阵列的第0个顶点;三角形中,第二个顶点对应于顶点阵列的第1个顶点;三角形中,第三个顶点对应于顶点阵列的第2个顶点;

要画索引三角形,首先要建立索引缓冲:

num_elems = sizeof(indices) / sizeof(indices[0]);
pID3DDevice->CreateIndexBuffer(sizeof(WORD) * num_elems,
D3DUSAGE_WRITEONLY,
D3DFMT_INDEX16,
D3DPOOL_DEFAULT,
&pIndexBuffer);

第二步是用顶点填充这个索引缓冲:

WORD *pIndex;
pIndexBuffer->Lock(0, 0, (BYTE **)&pIndex, 0);
for(ii = 0; ii < num_elems; ii++)
{
pIndex[ii] = indices[ii];
}
pIndexBuffer->Unlock();

设定索引缓冲:

pID3DDevice->SetIndices(pIndexBuffer, 0);

把DrawScene()的相应的pID3DDevice->DrawPrimitive(...)换成:

pID3DDevice->DrawIndexedPrimitive(
D3DPT_TRIANGLELIST,
0,
sizeof(indices) / sizeof(indices[0]),
0,
sizeof(indices) / sizeof(indices[0]) / 3);

运行程序的到的还是一个三角形。

第五章 加入帖图

(DX8MFC4)

首先,在MYVERTEX结构中加入帖图坐标系tu和tv,并给顶点阵列赋以适当的值。

下一步,设置你的帖图:

D3DXCreateTextureFromFile(pID3DDevice,

"dx5_logo.bmp",

&pTexture);

pID3DDevice->SetTexture(0, pTexture);

其中的"dx5_logo.bmp"指的是帖图文件,你可以用其他的文件代替它,运行程序你会看到一个带帖图的三角形。

上一页  1 2 3 4 5 6  下一页

Tags:MFC 架构 DirectX

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接