У текстуры прозрачность цвета тумана

Версия Minecraft
1.11.2
1,015
9
102
Опять на счёт HUD'a. Я пока его не сделаю, не отстану от вас, ибо я не сильно шарю в openGL. Кароче вот я написал свой рендер (скопипастил с waila):
Код:
public class RenderHUD {
    final Minecraft mc = Minecraft.getMinecraft();
    final FontRenderer font = Minecraft.getMinecraft().fontRendererObj;
    final ImplantsHUD implantsHUD = new ImplantsHUD();
    final int[] toSave = new int[]{
            GL_BLEND,
            GL_LIGHTING,
            GL_LIGHT0,
            GL_LIGHT1,
            GL_DEPTH_TEST,
            GL_RESCALE_NORMAL,
            GL_COLOR_MATERIAL,
            GL_ALPHA_TEST
    };
    int func;
    boolean mask;

    @SubscribeEvent
    @SideOnly(Side.CLIENT)
    public void tickRender(TickEvent.RenderTickEvent e) {
        if (mc.currentScreen == null && mc.world != null && mc.isGuiEnabled()) {
            GL11.glPushMatrix();
            boolean[] data = save();

            GL11.glDisable(GL12.GL_RESCALE_NORMAL);
            RenderHelper.disableStandardItemLighting();
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glDisable(GL11.GL_DEPTH_TEST);
            GL11.glDepthMask(false);

            ScaledResolution res = new ScaledResolution(mc);
            int x1 = (res.getScaledWidth() - 109) / 8;
            int y1 = (res.getScaledHeight() - 290) / 2;
            GL11.glTranslated(x1, y1, 0);
            implantsHUD.draw(mc, font, 0, 100, 0);

            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            load(data);
            GL11.glEnable(GL_DEPTH_TEST);
            GL11.glPopMatrix();
        }
    }

    private boolean[] save(){
        boolean[] data = new boolean[toSave.length];
        for (int i = 0; i < toSave.length; i++)
            data[i] = GL11.glGetBoolean(toSave[i]);
        func = GL11.glGetInteger(GL_DEPTH_FUNC);
        mask = GL11.glGetBoolean(GL_DEPTH_WRITEMASK);
        GL11.glPushAttrib(GL_CURRENT_BIT);
        return data;
    }

    private void load(boolean[] data){
        for (int i = 0; i < data.length; i++) {
            if (data[i])
                GL11.glEnable(toSave[i]);
            else
                GL11.glDisable(toSave[i]);
        }
        GL11.glDepthFunc(func);
        GL11.glDepthMask(mask);
        GL11.glPopAttrib();
    }
}


[font=Monaco, Consolas, Courier, monospace]ImplantsHUD:
[/font]
Код:
public class ImplantsHUD extends Gui{

    public void draw(Minecraft mc, FontRenderer font, float energy, float energyMax, int voltage){
        GlStateManager.enableBlend();
        GlStateManager.color(1,1,1,0.75f);
        GlStateManager.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

        mc.getTextureManager().bindTexture(new ResourceLocation("meem:textures/gui/implantshud/energybackground.png"));
        drawModalRectWithCustomSizedTexture(0, 0, 0,0,109,290,109,290);

        font.drawString("Energy", 30, -20, 1606345);
        font.drawString(voltage == 0 ? "Not charging" : voltage + " Volt", 10, 300, voltage == 0 ? 13107200 : 51200);
        GlStateManager.disableBlend();
        GlStateManager.color(1,1,1, 1);
    }
}

И в самой игре наблюдается вот такая шляпа:
c91864ccfaf3a706ee9ff35afb1e0965-full.png


Вот прозрачность вокруг этой палки принимает цвет тумана (если туман темный, то цвет темный и т.д.). Такое чувство, что прозрачность формируется наложением на туман, а не на то, что перед ним. Я вообще без понятия как это исправить
 
Решение
Minebot написал(а):
Daniel-code написал(а):
Просто убери color, из-за него этот туман вокруг текстуры. Ты же отрисовываешь текстуру зачем тебе цвет вообще?

Нет, не из-за цвета. Ток что попробовал, ничего не изменилось
Тогда попробуй вместо GlStateManager изпользовать просто GL11 методы
1,015
9
102
Daniel-code написал(а):
Просто убери color, из-за него этот туман вокруг текстуры. Ты же отрисовываешь текстуру зачем тебе цвет вообще?

Нет, не из-за цвета. Ток что попробовал, ничего не изменилось
 
66
2
13
Minebot написал(а):
Daniel-code написал(а):
Просто убери color, из-за него этот туман вокруг текстуры. Ты же отрисовываешь текстуру зачем тебе цвет вообще?

Нет, не из-за цвета. Ток что попробовал, ничего не изменилось
Тогда попробуй вместо GlStateManager изпользовать просто GL11 методы
 
1,015
9
102
Daniel-code написал(а):
Minebot написал(а):
Daniel-code написал(а):
Просто убери color, из-за него этот туман вокруг текстуры. Ты же отрисовываешь текстуру зачем тебе цвет вообще?

Нет, не из-за цвета. Ток что попробовал, ничего не изменилось
Тогда попробуй вместо GlStateManager изпользовать просто GL11 методы

О, нормально заработало. Чувак, спасибо тебе
 

Icosider

Kotliner
Администратор
3,601
99
664
Нет чтоб выучить opengl, так нет же, надо создавать овер1000 тем и спрашивать почему копипаст работает криво. Почему ты не юзаешь пуш и поп матрикс? Почему обратно не включаешь, то что вырубил?
 
Сверху