Используя массив вершин, массив четырехугольников для создания сетки четырехугольников

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

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

Поэтому, пожалуйста, поправьте меня, если я неправильно понимаю.

Так что, если пользователь хочет сделать меш 4х4, будет 16 квадратов и 64 вершины для их размещения.
Так как пользователь определяет разрешение сетки (о, кстати, размер границы уже указан в начале), я создаю эти 64 вершины.

До сих пор я правильно понял?

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

Конечно, мне нужно большее разрешение, вероятно, 32×32 или даже больше, чтобы правильно отобразить такую ​​вещь.

1

Решение

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

Это будет выглядеть примерно так для 4×4

 _ _ _ _
|_|_|_|_|
|_|_|_|_|
|_|_|_|_|
|_|_|_|_|

В этом случае вам понадобится только (4 + 1) x (4 + 1) вершин, то есть 25 вершин. Вы можете указать четыре вершины каждого четырехугольника уникально, хотя, помимо ненужности для меша (и траты памяти и скорости), может оказаться, что вам будет сложнее добавить эту «горную» функциональность (что-то вроде ландшафта угадывание). Если вы перемещаете вершину в середине меша, вы, вероятно, захотите, чтобы она двигалась для всех четырех четырехугольников, которые используют эту вершину. Если у вас есть квадроциклы поделиться вершинами (как они делают в сетке), перемещение одной точки изменит все квады, использующие эту точку.

В основном, укажите все уникальные вершины и соедините их как четырехугольники. Избыточность лучше избегать.

Кроме того, если вы изучаете OpenGL, убедитесь, что вы не учитесь с конвейером фиксированных функций (если у вас есть glBegin() или glVertex3f() там вы используете фиксированный конвейер функций). Существует слишком много причин, по которым вы не должны использовать его (ему десятилетия, он медленнее, он не настолько гибок), но, возможно, самая главная причина в том, что это пустая трата времени, если вы хотите создавать настоящую графику. Вам нужно будет научиться использовать программируемый конвейер, а наличие фиксированных привычек конвейера функций и способов мышления только сделает это сложнее, чем должно быть.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]