Предлагаемые способы обработки сеток в OpenGL - PullRequest
0 голосов
/ 04 апреля 2011

Я ищу лучшие способы обработки меша, чем моя текущая реализация, которая в основном представляет собой формат .obj в форме класса.

Моя текущая структура -

Class Vertex
{
    float[3] Pos;
}

Class Face
{
    Vertex[3] Verts;
    float[3][3] Norm;
    float[3][3] Tex;
}

Class Mesh
{
    Face[] MeshData;
}

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

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

1 Ответ

0 голосов
/ 04 апреля 2011

Если вы собираетесь манипулировать сеткой, а скорость рендеринга - это второстепенный взгляд на половинную структуру данных .

Если скорость рендеринга имеет первостепенное значение, сгладьте все в чередующуюся вершину / текскорд / нормальный массив для максимального удобства VA / VBO:

struct Vertex
{
    float x, y, z;
    float u, v;
    float nx, ny, ny;
};

Обычно вы хотите, чтобы sizeof(Vertex) был кратным 32 байтам.

...