0
今天我開始使用DirectX(D3D9),一切都很順利,直到我創建了Static-mesh類。該類包含用於生成緩衝區,繪製和釋放緩衝區的方法。DirectX - 創建帶頂點數組作爲參數的緩衝區
問題在於緩衝區生成功能。如果我想將頂點數組作爲參數傳遞給函數,則在繪製時不繪製三角形(用三角形測試),但是,如果頂點在函數中聲明(與通過函數時相同的方式參數),三角形不繪製。
頂點類:
#define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)
class CUSTOMVERTEX
{
public:
float X, Y, Z, RHW;
DWORD Color;
};
頂點緩衝器生成函數(即不工作):
void StaticMesh::CreateBuffer(CUSTOMVERTEX Vertices[], LPDIRECT3DDEVICE9 d3ddev)
{
// USING FIXED SIZE WHILE TESTING WITH A SINGLE TRIANGLE.
d3ddev->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX), 0, CUSTOMFVF, D3DPOOL_MANAGED, &Buffer, NULL);
VOID* p;
Buffer->Lock(0, 0, (void**)&p, 0);
memcpy(p, Vertices, sizeof(Vertices));
Buffer->Unlock();
}
頂點緩衝器生成功能(即不工作):
void StaticMesh::CreateBuffer(LPDIRECT3DDEVICE9 d3ddev)
{
CUSTOMVERTEX vertices[3] =
{
{ 400.0f, 62.5f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 0, 255), },
{ 650.0f, 500.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 255, 0), },
{ 150.0f, 500.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0), },
};
// USING FIXED SIZE WHILE TESTING WITH A SINGLE TRIANGLE.
d3ddev->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX), 0, CUSTOMFVF, D3DPOOL_MANAGED, &Buffer, NULL);
VOID* p;
Buffer->Lock(0, 0, (void**)&p, 0);
memcpy(p, Vertices, sizeof(Vertices));
Buffer->Unlock();
}
我沒有看到問題是什麼。感謝您的幫助,如果需要更多信息,請告訴我。
謝謝,我怎麼沒有記住這一點。 – zeluisping