Правильный ресайз изображений в GUI, на новой версии

Версия Minecraft
1.12.2
476
9
39
Недавно узнал что можно с помощью addVertexWithUV в 1.7.10 можно отрисовывать гуишки без scalef
Так вот вопрос на засыпку будет ли это работать в новый версиях с buffer.pos().uv().
И где окончание endVertex() оставлять? Вроде бы если это 2д нужно оставлять аля вот так:
Java:
 buffer.pos().uv();
 buffer.pos().uv();
 buffer.pos().uv();
 buffer.pos().uv().endVertex();
Но хотел бы узнать новые способы отрисовки, ибо замучился юзать 512х512 изображение, которое рендерится как 128х128 с минимумом пикселей в итоге круг становится кхм... квадратом.
И конечно, хотел бы узнать будет ли это с буффером работать, ибо я что-то пока умею рисовать только через vertexData, что весьма странно использовать для рендера текстур.
Да и если слоты отрисовываешь вечно не туда съезжают на пиксель влево вся строчка или вправо и через scale это ну очень больно настраивать. Особенно с процентами и под разные разрешения.
На одну гуишку до 3 недель уходит чтобы нормально всё выправить это очень жестко и слииишком долго.
 
Решение
Все просто же. В позициях задаешь разверы необходимово квадрата на экране (512x512). В ювешках задаешь нужный квадрат на текстуре, приведенный в диапазон [0; 1]. Например, если текстура 1024х1024 и тебе нужно вывести верхний левый квадрат 256х256, то задаешь такие ювешки (0 / 1024, 0 / 1024); (0 / 1024, 256 / 1024); (256 / 1024, 256 / 1024); (256 / 1024, 0 / 1024) - это если рисовать от верхнего левого угла против часовой. В итоге на экране будет четверть текстуры, растянутая на 512х512.
И вообще, в классе Gui должен быть готовый метод.

И где окончание endVertex() оставлять? Вроде бы если это 2д нужно оставлять аля вот так:
Эм.. 4 вершины же. Поэтому ставить нужно после каждой buffer.pos().uv();

...
2,505
81
397
Все просто же. В позициях задаешь разверы необходимово квадрата на экране (512x512). В ювешках задаешь нужный квадрат на текстуре, приведенный в диапазон [0; 1]. Например, если текстура 1024х1024 и тебе нужно вывести верхний левый квадрат 256х256, то задаешь такие ювешки (0 / 1024, 0 / 1024); (0 / 1024, 256 / 1024); (256 / 1024, 256 / 1024); (256 / 1024, 0 / 1024) - это если рисовать от верхнего левого угла против часовой. В итоге на экране будет четверть текстуры, растянутая на 512х512.
И вообще, в классе Gui должен быть готовый метод.

И где окончание endVertex() оставлять? Вроде бы если это 2д нужно оставлять аля вот так:
Эм.. 4 вершины же. Поэтому ставить нужно после каждой buffer.pos().uv();

Это вообще извращение
 
Сверху