Я занимаюсь разработкой реального приложения, которое должно отображать на экране сплошные белые многоугольники и со временем менять их альфа-значения. Я пытаюсь научиться пользоваться GLTriangleBatch чтобы выполнить это (я хорошо знаю C ++, но не так много о OpenGL), и я не смог найти хороших примеров в Интернете. До сих пор я нашел несколько ресурсов, которые побудили меня собрать следующий фрагмент кода, но я все еще запутался в некоторых частях:
GLTriangleBatch myTriangles;
myTriangles.BeginMesh(1000000); // Include how many vertices you have: 1???
myTriangles.AddTriangle(...); // Add a triangle: 2???
// Repeat for all triangles for this batch
myTriangles.End(); // Done adding triangles
myTriangles.Draw(); // Draw the triangles
Я пометил части, с которыми я путаюсь, и вопросы приведены ниже:
Вопрос 1: Должно ли это число вершин быть точным, или можно переоценить и / или недооценить? Кроме того, представляет ли это число вершин «пакетные» вершины или отдельные вершины каждого треугольника (например, для 2 соединенных треугольников с 2 общими вершинами требуется 6 вершин или 4?)
Вопрос 2: Параметры:
это GLTriangleBatch
Класс, очевидно, является частью фреймворка, поставляемого с книгой OpenGL Super Bible. Он не является частью стандарта OpenGL (OpenGL — это простой C API).
Что касается первого вопроса, я предполагаю nMaxVerts
параметр BeginMesh()
верхний предел вершин, которые вы хотите нарисовать (каждый треугольник = 3 вершины). Таким образом, вы можете установить либо точное значение, либо завышенную оценку. Но вам нужно найти документацию или посмотреть на источник знать наверняка.
На второй вопрос да verts[3]
три позиции, которые составляют треугольник.
vNorms
это Лицо Нормальное треугольника. Используется для расчета освещения. И последний член, vTexCoords[3]
являются Координаты текстуры треугольника. Они используются для наложения текстур. Вы можете установить их на ноль, если вы не применяете текстуру к своей сетке.