Как напечатать OBB (массив float3) в OpenGL - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь напечатать OBB для игрового движка, который я делаю для предмета из колледжа: https://github.com/VictorSegura99/Alien-GameEngine.

Я получаю массив float3 с помощью MathGeoLib, используя структуру OBB, которая получает данные изв настоящее время загруженный FBX, но это может быть любой набор точек для печати с OpenGL.

OBB работает правильно, потому что я использую его для создания глобальной AABB и печатаю AABB в прямом режиме, и он работает довольно хорошо. Проблема в том, что я не могу напечатать OBB в прямом режиме, поэтому я должен использовать набор точек.

Фактический код, который я использую, это

    glColor3f(OBB_color.r, OBB_color.g, OBB_color.b);
    float3* obb_points=nullptr;
    obb.GetCornerPoints(obb_points);

    glGenBuffers(1, &obb_id);
    glBindBuffer(GL_ARRAY_BUFFER, obb_id);
    glBufferData(GL_ARRAY_BUFFER, sizeof(obb_points)*3, obb_points, GL_STATIC_DRAW);
    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);

    glDrawArrays(GL_LINES, 0, sizeof(obb_points) * 3);

    glDisableVertexAttribArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, 0);

Iожидать, что OpenGL напечатает OBB, соединяющий внешние точки линиями.

1 Ответ

0 голосов
/ 28 октября 2019

Я нашел решение вчера.

Я нашел функцию CornerPoint(int index) в структуре OBB, поэтому я соединил точки в прямом режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...