CUSTOMVERTEX* pVertexArray;
if(FAILED(m_pVB->Lock(0, 0, (void**)&pVertexArray, 0))) {
return E_FAIL;
}
pVertexArray[0].position = D3DXVECTOR3(-1.0, -1.0, 1.0);
pVertexArray[1].position = D3DXVECTOR3(-1.0, 1.0, 1.0);
pVertexArray[2].position = D3DXVECTOR3(1.0, -1.0, 1.0);
...
我还没有碰过C++一段时间 - 因此这个主题,但这段代码让我感到困惑。在调用m_pVB-> Lock之后,数组被初始化。谁能告诉我C++的这一点?
这是伟大的,但除了我遇到的问题是如何发生这种情况。下面的代码使用了九个元素,但是另一个函数(非常复制/粘贴)我正在使用的代码只有四个元素。
CUSTOMVERTEX是一个结构体,但我的印象是这不重要,而且结构体/对象数组需要初始化为固定大小。
任何人都可以清除它吗?
编辑:
给出的答复,它是如何知道我需要数组中的九个元素,或四个等...?
所以只要缓冲区足够大,元素是合法的。如果是这样,这个代码是设置缓冲区大小,如果我没有弄错。
if(FAILED(m_pd3dDevice->CreateVertexBuffer(vertexCount * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &m_pVB, NULL))) {
return E_FAIL;
}
我应该补充说,这是针对我正在扩展的DirectX应用程序。 Lock方法似乎是DirectX的一部分。 – Finglas 2009-12-07 20:54:17
它应该画一个三角形吗? – 2009-12-07 20:57:31
那么谁把这标记为冒犯?在我看来,公然滥用标记系统。 – GManNickG 2009-12-08 01:18:35