Использование глобального вершинного кэша и все еще использовать преимущество glRotate? - PullRequest
3 голосов
/ 15 сентября 2010

У меня есть простое приложение Android OpenGL-ES, и, поскольку все модели очень просты (<10 вершин!), Я реализовал глобальный "мировой" класс, который отслеживает все вершины и выполняет одну пару команд GL на рендеринг кадра. </p>

Каждый объект модели добавляет свои вершины в глобальные буферы, и они «отправляются» в GL за одну операцию:

gl.glVertexBuffer(...);
gl.glDrawElements(...);

Мой вопрос (возможно, очевидный ответ, но я хочу быть уверенным) заключается в том, означает ли это, что я должен делать все свои вращения вручную?

Мои базовые объекты просто определяют группу вершин, которые добавляются в кэш, например, треугольник, квадрат, пентаграмму и т. Д. Затем объект My World берет большой массив вершин и выгружает их в GL. Если я хочу повернуть все это, правильно ли я считаю, что мне нужно выполнять свои собственные манипуляции с координатами вершины (тригонометрия!)?

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

Ответы [ 2 ]

0 голосов
/ 16 сентября 2010

Да, к сожалению, это цена, которую нужно заплатить за выполнение одного розыгрыша для нескольких моделей.Расчеты действительно довольно просты, если вы используете стандартный порядок Scale-Rotate-Translate.Для каждой вершины:

  • Определите расстояние до центра: Xrel = X-Xcenter и Yrel = Y-Ycenter
  • Умножьте это на шкалу для x и y.Xscaled = scalex*Xrel и Yscaled = scalex*Yrel.
  • Определить новые позиции относительно центра после вращения: Xrot = Xscaled*cos(d)-Yscaled*sin(d) и Ynew = Xscaled*sin(d)+Yscaled*cos(d).
  • Переместить вершины с переводом: Xnew = Xrot + translatex иYnew = Yrot+translatey.

Легко!Ура, Аерт.

0 голосов
/ 15 сентября 2010

Нет, использование glRotate будет хорошо работать с массивами вершин.

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