Visual C++ 6 DirectX9
Требуется сделать обычный куб. Делаю так:
| Код | HRESULT InitVB() { MYVERTEX vers[]={ {-1, 1, 0, 0xFF0000FF}, { 0, 0, 0, 0xFF0000FF}, {-1, 0, 0, 0xFF0000FF}, {-1, 1, 0, 0xFF0000FF}, { 0, 1, 0, 0xFF0000FF}, { 0, 0, 0, 0xFF0000FF}, { 0, 1, 0, 0xFF00FF00}, { 0, 0,-1, 0xFF00FF00}, { 0, 0, 0, 0xFF00FF00}, { 0, 1, 0, 0xFF00FF00}, { 0, 1,-1, 0xFF00FF00}, { 0, 0,-1, 0xFF00FF00}, {-1, 0,-1, 0xFFFF0000}, { 0, 0,-1, 0xFFFF0000}, {-1, 1,-1, 0xFFFF0000}, { 0, 1,-1, 0xFFFF0000}, {-1, 1,-1, 0xFFFF0000}, { 0, 0,-1, 0xFFFF0000}, {-1, 1, 0, 0xFF00FFFF}, {-1, 0, 0, 0xFF00FFFF}, {-1, 0,-1, 0xFF00FFFF}, {-1, 1,-1, 0xFF00FFFF}, {-1, 1, 0, 0xFF00FFFF}, {-1, 0,-1, 0xFF00FFFF}, {-1, 1, 0, 0xFFFF00FF}, {-1, 1,-1, 0xFFFF00FF}, { 0, 1, 0, 0xFFFF00FF}, {-1, 1,-1, 0xFFFF00FF}, { 0, 1,-1, 0xFFFF00FF}, { 0, 1, 0, 0xFFFF00FF}, {-1, 0, 0, 0xFFFFFF00}, { 0, 0, 0, 0xFFFFFF00}, { 0, 0,-1, 0xFFFFFF00}, {-1, 0, 0, 0xFFFFFF00}, { 0, 0,-1, 0xFFFFFF00}, {-1, 0,-1, 0xFFFFFF00}, }; p_Dev->CreateVertexBuffer(3*sizeof(MYVERTEX), 0, D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &pVB, NULL); VOID *pVer; pVB->Lock (0, sizeof (vers), (void **) &pVer, 0); memcpy (pVer, vers, sizeof (vers)); pVB->Unlock(); return S_OK; };
|
Отрисовка:
| Код | VOID Render() { p_Dev->Clear (0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1, 0); p_Dev->BeginScene();
SetUpMat(); //Otrisovka p_Dev->SetStreamSource(0, pVB, 0, sizeof (MYVERTEX)); p_Dev->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE);
p_Dev->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12);
p_Dev->EndScene(); p_Dev->Present(0,0,0,0); };
|
При запуске возникает Runtime Error. Ошибка видимо где-то здесь:
{-1, 0, 0, 0xFFFFFF00}, { 0, 0, 0, 0xFFFFFF00}, { 0, 0,-1, 0xFFFFFF00}, {-1, 0, 0, 0xFFFFFF00}, { 0, 0,-1, 0xFFFFFF00}, {-1, 0,-1, 0xFFFFFF00},
т. к. Если закомментировать, то все нормально. Я непойму, что здесь может быть не правильно. Помогите пожалуйста разобраться. |