2012-11-17 2 views
1

Я делаю программу OpenGL, и мне нужно создать определяемый пользователем размер квадрата.Использование массива вершин, квадрат для создания сетки квадрата

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

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

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

Я получаю его до сих пор?

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

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

+0

Эти квадроциклы образуют один большой квадрат? EG, будет ли 2x2 похож на четырехквартирный суд? – GraphicsMuncher

ответ

0

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

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

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

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

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

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

+0

Большое вам спасибо за помощь! Я только начал работать над этим, и он направил меня в правильном направлении! Я использовал старые функции в качестве первого assinment, просто для того, чтобы рисовать кривые разделения и играть с ними - трансформируя, вращая подобные вещи. это очень сложно для меня, но я очень уверен, что могу это сделать! – user1830954

+0

, поэтому массив вершин будет просто вершинами [] = {0, 3, ...}? было бы достаточно, чтобы держать все вершины для моей сетки? требование 32x32 или 64x64, и я бросаю blobbly объект и позиционирую его с помощью gaussian blobs и плавного затенения – user1830954

+0

Не определяйте их статически (слишком много работы!) - сгенерируйте их на основе размеров вашего квадроцикла. Они окажутся похожими на (0,0), (1,0), (2,0) ... (0,1), (1,1), (2,1) ... (n, п).Затем вы можете определить вершины каждого квадрата через индексы в этот массив, который вы также должны генерировать. – GraphicsMuncher

Смежные вопросы