- 378
- 2
Ребята, я одного не понимаю -
GL11.glPushMatrix();
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glPopMatrix();
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Много чего поняла, но как юзать это в моем говно-коде - не знаю.Oldestkon написал(а):http://lmgtfy.com/?q=opengl+what+does+push+matrix+do
И вдогонку своё обьяснение:
В OpenGL есть различные операции с матрицами: translate (смещение), rotate (поворот), scale (размер). При каждой из этих операций текущая матрица домножается на переданную матрицу (матрицу смещения, скейла или поворота), в итоге они как бы "совмещаются" (см. законы умножения матриц).
glPushMatrix и glPopMatrix работают со стеком матриц:
glPush - помещает текущую матрицу на вершину хранилища.
glPop - берет самую верхнюю матрицу из хранилища.
По сути это сохранения состояний матриц с возможной последующей загрузкой.
Это полезно для того, чтобы отрисовать некоторую группу обьектов с определенным поворотом, смещением или измененным размером, а все остальные обьекты отрисовать в нормальном режиме. И не приходится откатывать матрицу до предыдущего состояния, в итоге экономим огромное кол-во операций.
Заниженное ЧВСannalifegame написал(а):Много чего поняла, но как юзать это в моем говно-коде - не знаю.Oldestkon написал(а):http://lmgtfy.com/?q=opengl+what+does+push+matrix+do
И вдогонку своё обьяснение:
В OpenGL есть различные операции с матрицами: translate (смещение), rotate (поворот), scale (размер). При каждой из этих операций текущая матрица домножается на переданную матрицу (матрицу смещения, скейла или поворота), в итоге они как бы "совмещаются" (см. законы умножения матриц).
glPushMatrix и glPopMatrix работают со стеком матриц:
glPush - помещает текущую матрицу на вершину хранилища.
glPop - берет самую верхнюю матрицу из хранилища.
По сути это сохранения состояний матриц с возможной последующей загрузкой.
Это полезно для того, чтобы отрисовать некоторую группу обьектов с определенным поворотом, смещением или измененным размером, а все остальные обьекты отрисовать в нормальном режиме. И не приходится откатывать матрицу до предыдущего состояния, в итоге экономим огромное кол-во операций.
Что-что?undefined написал(а):Заниженное ЧВС
ЧВС - Чувство Собственной Важностиannalifegame написал(а):Что-что?undefined написал(а):Заниженное ЧВС
Ахахах, слушай, ну помоги пожалуйста, скайп хоть напиши и разъесни пожалуйста:сsvk написал(а):ЧВС - Чувство Собственной Важностиannalifegame написал(а):Что-что?undefined написал(а):Заниженное ЧВС
А почему писал undefined, а не я?![]()
А вот теперь обьясни на моем коде -Oldestkon написал(а):![]()
Например, я рисую GUI-элемент. В начале цикла отрисовки я сохраняю текущую матрицу трансформаций, а внутри могу насиловать её как хочу. Менять скейл элементов, поворачивать, смещать хоть к бабушке на Мальдивы, в конце концов, после отрисовки элемента и вызова glPopMatrix я буду уверен, что моя матрица станет ровно такой, какой была до отрисовки элемента и мне не придется дергать процессор лишний раз, отменяя все трансформации путем применения обратных к уже совершенным (ещё и в строго определенном порядке!), и я благополучно смогу отрисовать все остальные элементы, не боясь, что они уползут в далёкие края.
Тогда я врятли пойму.Oldestkon написал(а):
int i = 0;annalifegame написал(а):Тогда я врятли пойму.Oldestkon написал(а):