Сегодня я начал работать с 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