Я нахожусь в процессе преобразования приложения openGL ver 1.0 в более современную версию. Я застрял на функции и мне нужна помощь.
В основном мы читаем в точках данных из формата файла [.SLC], тогда данные находятся внутри структуры данных vector<vector<vector<float, float, float>>>
. старый рендеринг:
for [size of first vector]
for [size of second vector]
glBegin(GL_LINE_LOOP);
for [size of third vector]
glVertex3f(float, float, float);
glEnd();
этот 3-х слой l oop представляет отдельный объект, который я пытаюсь визуализировать с помощью одного вызова некоторого метода, подобного этому. Кажется, я не могу понять это правильно.
glVertexAttribPointer(vp, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), nullptr);
glDrawElements(GL_LINE_LOOP, indices.size() / sizeof(uint32_t), GL_UNSIGNED_INT, NULL);
Может кто-нибудь, пожалуйста, укажите мне в правильном направлении. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я постараюсь объяснить дальше. Спасибо
Моя проблема - собрать коллекцию вершин / индексов для отправки в функцию рендеринга.
Как показывает пример, есть 3 цикла. Я думал, что как раз перед началом 3-го oop начала собирать данные вершин.
Эта часть проста, но коллекция индексов смущает меня. Если у 3-й l oop есть вершина [N], у меня также должен быть индекс [N].
На этом этапе я должен отправить эти 2 коллекции в функцию рендеринга? Если да, то это может закончиться сотнями обращений к функции рендеринга, поэтому следующим вопросом будет ли способ объединить все данные и отправить их как один вызов?