Уважаемые форумчане! При рисовании квадрата с помощью буфера индексов столкнулся с проблемой вылета программы. Вылетает с такой ошибкой: Code: Unhandled exception at 0x0098e590 in indexBuffer1.exe: 0xC0000005: Access violation reading location 0x015d8a4c. запускается и тут же вылетает. Подозреваю, что это из-за строки Code: pDirect3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2); так как если ее заккоментить, то все ок. вот код функции InitGeometry() Code: void InitGeometry() { pDirect3DDevice->CreateVertexBuffer(3 * sizeof(CUSTOMVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &vertexBuffer, NULL); pDirect3DDevice->CreateIndexBuffer(6 * sizeof(unsigned short), D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_DEFAULT, &indexBuffer, NULL); CUSTOMVERTEX vertices[] = { {0.0f, 0.0f, 0.0f, 0xff000000, }, {0.0f, 1.0f, 0.0f, 0xff000000, }, {1.0f, 0.0f, 0.0f, 0xff000000, }, {1.0f, 1.0f, 0.0f, 0xff000000, }, }; unsigned short indexes[] = { 0, 1, 2, 1, 3, 2 }; void* pVertices; void* pIndexes; vertexBuffer->Lock(0, sizeof(vertices), (void**)&pVertices, 0); memcpy(pVertices, vertices, sizeof(vertices)); vertexBuffer->Unlock(); indexBuffer->Lock(0, sizeof(indexes), (void**)pIndexes, 0); memcpy(pIndexes, indexes, sizeof(indexes)); indexBuffer->Unlock(); pDirect3DDevice->SetStreamSource(0, vertexBuffer, 0, sizeof(CUSTOMVERTEX)); pDirect3DDevice->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE); pDirect3DDevice->SetIndices(indexBuffer); вызываю я ее сразу же после создания устройства directX. объявление вершинного и индексного буферов: Code: IDirect3DVertexBuffer9* vertexBuffer = 0; IDirect3DIndexBuffer9* indexBuffer = 0; я смотрел в Msdn, там также вызывают эту функцию, с теми же аргументами. в чем проблема?