При скейле текстуры ломается позиционирование

Версия Minecraft
1.7.10
1,159
38
544
Здрсте! У меня есть здаравенная текстура 300x300 которую я хочу перед рендером скейлить до ~20x20. При юзании GL11.glScalef(...) при изменении окна игры стартовая точка отрисовки постоянно меняется. Точку начала отрисовки я определяю через ScaledResolution:
Java:
 Minecraft mc = Minecraft.getMinecraft();
ScaledResolution scaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);

int x = scaledResolution.getScaledWidth() / 2 + 91;
int y = scaledResolution.getScaledHeight() - right_height; // net.minecraftforge.client.GuiIngameForge.right_height

Подскажите плз как быть.
 
Решение
У меня есть здаравенная текстура 300x300 которую я хочу перед рендером скейлить
Есть же для отрисовки текстуры определённого размера метод Gui#drawModalRectWithCustomSizedTexture.
А если всё же хочешь через glScale менять размер, то учти, что он скейлит и координаты тоже, так что тебе нужно делать как-то так.
Java:
        GL11.glTranslated(compassX, compassY, 0); // это X и Y того места, где ты хочешь текстуру нарисовать
        GL11.glScalef(scale, scale, 1f);
        drawModalRectWithCustomSizedTexture(
                0, 0, // X и Y тут должны быть по нулям, т.к. ты уже "сместился" на нужные координаты
                uOffset, 0,
                300, 32 * 2,
                1024, 1024
        )...
292
14
160
У меня есть здаравенная текстура 300x300 которую я хочу перед рендером скейлить
Есть же для отрисовки текстуры определённого размера метод Gui#drawModalRectWithCustomSizedTexture.
А если всё же хочешь через glScale менять размер, то учти, что он скейлит и координаты тоже, так что тебе нужно делать как-то так.
Java:
        GL11.glTranslated(compassX, compassY, 0); // это X и Y того места, где ты хочешь текстуру нарисовать
        GL11.glScalef(scale, scale, 1f);
        drawModalRectWithCustomSizedTexture(
                0, 0, // X и Y тут должны быть по нулям, т.к. ты уже "сместился" на нужные координаты
                uOffset, 0,
                300, 32 * 2,
                1024, 1024
        );
        GL11.glScalef(-scale, -scale, 1f);
        GL11.glTranslated(-compassX, -compassY, 0);
 
Последнее редактирование:
1,159
38
544
@Plasticable найс, сработало! А вот почему GL11.glScalef(-scale, scale, 1f) имеет не отрицательный второй параметр? Разве мы не должны поставить туда минус?
 
Сверху