LINUX.ORG.RU

Как вращать объект на современном opengl?

 


0

1

Есть объект он задается в статическом массиве координаты в цикле по математическим формулам. Добавил вращение по уроку https://habr.com/ru/articles/319144/, но проблема такая что весь объект вращается одинаково, он с копиями. Как вращать разные копии по-разному? Насколько я понял glPushMatrix и glPopMatrix не используется в современном опенжл.

http://www.opengl-tutorial.org/ru/beginners-tutorials/tutorial-3-matrices/

На уровне приложения могут быть углы эйлера и/или кватернионы.

У объекта будет

  • позиция {x,y,z}
  • масштаб {x,y,z}
  • поворот {x,y.z} или {x,y,z,w}

Из каждого нужно получить матрицу 4x4 и потом все эти матрицы перемножить друг на друга. Получишь «мировую матрицу» объекта.

передаёшь в шейдер как uniform

Затем в вершинном шейдере их получаешь

uniform mat4 world;
...

И перемножаешь с вертексом и другими матрицами вида,проекции и тд.

Погляди как в Corange сделано (там OpenGL2.1 но суть одна)

Матрицы и прочие функции помощники

Затем глянь как эти данные передаются в шейдеры

Затем глянь как эти данные получаются и обрабатываются в вершинном (там много лишнего смотри только на участие world)

И потом в пиксельном шейдере (хотя по данному вопросу это уже лишнее и в самом фрагментном шейдере там много лишнего для твоего случая)

Хотя у тебя в ссылке всё есть, тебе нужны по сути функции помощники для вращения и работы с матрицами,камерой и прочим, возьми какую библиотеку для этой математики и используй или накопируй из Corange нужные функции для манипуляции с объектом и расчёта матриц.

Или GLM https://github.com/g-truc/glm например. В целом ты можешь даже не вникать по началу в матрицы, а использовать для всех манипуляций функции помощники да перемножать результаты в шейдере и всё. Вручную потом ничего делать не надо.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от bo4ok

В смысле зачем, на нём вся графика работает. Про вулкан вот только не надо. Вообще не в тему. Его нет и в половине мест где есть OGL.

На DE своё сейчас смотришь? Оно аппаратно ускорено? Угадай через что =) Аксерелацию видео имеешь? Угадай через что текстурки копируются. Андроид есть? Угадай через что все анимации и графика рисуются.В браузере 3D видел? Угадай через что оно всё работает.

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

Инди разработку и 2D игры в целом угадай на чём чаще всего делают. И так далее.

Вот за этим OGL в 2к20 и в 2к30 и ещё долго будет.

У OpenGL и Вулкана разные ниши.

Вот для ААА разработок, уже можно сомневаться в его нужности. Хотя OGL4.6 от вулкана не далеко стоит. Но OGL4.6 сам по себе далеко не нужен 3.2/3.3 топчик.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)