Люди постоянно говорят мне использовать хотя бы вершинные массивы. Но я думаю, что это не лучшая идея, поскольку я использую glPushMatrix ()
с glTranslatef / glRotatef
для позиционирования объекта в трехмерном мире.
Итак, следует ли мне прекратить использовать glPushMatrix ()
и вычислить позиции повернутых / перемещенных вершин в мире «вручную», а затем поместить данные их вершин в массив вершин и затем отрендерить все сразу?
Но,
Правильно ли я делаю?
Кроме того, как мне разработать структуру данных для объектов, которые я буду сортировать? Например, хорошо ли использовать std :: vector
для хранения данных вершин для каждого объекта? Или есть альтернатива лучше? Я думал, что std :: vector
для хранения всех этих данных будет выглядеть так:
struct GameObject {
int TexID;
float z; // we will sort by this
vector<VTCNStruct> VertexData; // store each point of the object here (including color/normal/texcoord points).
};
vector<GameObject> GameObjectBuffer; // push all sortable objects here
Кроме того, на шаге 4: можно ли использовать уже существующий std :: vector
в этом случае? У меня была идея, что я должен использовать необработанные массивы, такие как new float [100]
, для отправки массива вершин на мой графический процессор, или я могу каким-то образом использовать уже существующий отсортированный std :: вектор
здесь каким-то образом (эффективно) без создания нового буфера каждый раз при изменении идентификатора текстуры?