Рекламировать массив вершин с помощью GLSL? - PullRequest
4 голосов
/ 28 августа 2010

У меня есть векторный массив треугольников, которые в основном состоят из группы квадратов, которые нужно расклеивать. Нечто похожее на

GLfloat vertexpositions[60 * 3]; 
// [x,y,z] * 6 for each square, and there are 10 squares

И после этого вызывается glDrawArray с соответствующими аргументами, чтобы нарисовать всего 10 квадратов.

Можно ли написать шейдерную программу, которая может отдельно показывать все эти многоугольники, существующие в одном и том же массиве вершин?

Ответы [ 3 ]

1 голос
/ 28 августа 2010

Есть два подхода. Используйте точечные спрайты или «отмените» вращение после объединения ваших преобразований. С рекламными щитами вы хотите перевод, но не вращение.

Если вы передадите матрицу конечного мира M вершинному шейдеру как униформу, то:

M[0][0] = M[1][1] = M[2][2] = 1.0

отменит вращение, предполагая, что сдвиг не выполняется. Или вы можете просто извлечь его вектор перевода из M [0 - 3] [3].

1 голос
/ 28 августа 2010

Вы можете выполнять обработку примитива с помощью геометрического шейдера.

0 голосов
/ 18 декабря 2013

Как минимум, вам необходимо хранить центральное расположение каждого рекламного щита. Затем вы можете использовать геометрический шейдер для генерации вершин. Кроме того, вы также можете хранить вершины относительно каждого местоположения центра и преобразовывать вершины в вершинный шейдер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...