Поворот полоски еды

Версия Minecraft
1.7.10
4
0
Есть ванильная полоска еды, ее нужно сделать вертикальной. Не множко почитав я понял, что это делается через GL11.glRotatef(0F, 0f, 0.0f, 0f); , но Я так и не допер как нормально поворачивать. Оно то улетает куда-то, то начинает сжиматься.
1591347213154.png
 
Решение
По какой оси вращаешь?
^ во-во
Всё, в том числе гуишки, в трёхмерном пространстве рисуется, так-что ты его в 3д поворачиваешь таким образом, что это выглядит как сжатие.
Перпендикулярна экрану ось Z, в случае с GUI, надо вращать вокруг неё

И при этом надо ещё транслейтом (glTranslate[f|d]) переместиться в ту точку, вокруг которой хочешь вращать, повернуть, переместиться обратно (ну или gl[Push|Pop]Matrix), а потом уже после того, как оно отрендерится, теми же действиями в обратном порядке (или опять-же gl[Push|Pop]Matrix, тут точно) вернуть всё как было, а то всё остальное поперемещается-повращается.

Хотя судя по тому что у тебя вообще всё не пошло сразу по такому-то месту, то вот эта вторая часть не нужна потому-что там...
7,099
324
1,510
Почитай в документации функции, за че отвечает каждый из ее параметров
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
По какой оси вращаешь?
^ во-во
Всё, в том числе гуишки, в трёхмерном пространстве рисуется, так-что ты его в 3д поворачиваешь таким образом, что это выглядит как сжатие.
Перпендикулярна экрану ось Z, в случае с GUI, надо вращать вокруг неё

И при этом надо ещё транслейтом (glTranslate[f|d]) переместиться в ту точку, вокруг которой хочешь вращать, повернуть, переместиться обратно (ну или gl[Push|Pop]Matrix), а потом уже после того, как оно отрендерится, теми же действиями в обратном порядке (или опять-же gl[Push|Pop]Matrix, тут точно) вернуть всё как было, а то всё остальное поперемещается-повращается.

Хотя судя по тому что у тебя вообще всё не пошло сразу по такому-то месту, то вот эта вторая часть не нужна потому-что там походу уже есть свои gl[Push|Pop]Matrix, так что всё ок
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Так, ну в ротейте нужны параметры 90, 0, 0, 1, зачем там 0.1 эти
Кстати я ещё не помню, градусы там или радианы, так что вместо 90 может быть Math.PI / 2

А в транслейте ты двигаешь как раз по оси z только, это бессмысленно т.к. z перпендикулярна экрану и ты подвинул мир "ближе" (или дальше, не помню) к себе, что в ортографической проекции (картинки же двумерные таки) ничего не меняет.
Там даже depth test выключен, поэтому даже на порядок отрисовки не влияет, порядок только "что позже то поверх".
крч третий параметр ноль, а первые два - координаты x и y, двигай их
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Стоп, ты ещё popMatrix сразу делаешь, что сбрасывает текущую трансформацию до той, какой она была при последнем pushMatrix

Тебе надо подвинуть, повернуть, подвинуть обратно (без поп матрикс, ибо отменит и поворот тоже)

И если это всё сломает, то до этого сделать пуш, а уже аж после того как штука отрендерится (там должен быть ивент Post тип) сделать поп
 
Сверху