Tessellator в 1.8.9

Версия Minecraft
1.8.9
355
2
17
Доброго времени суток. Ранее в 1.7.10 я использовал вот такой метод, для отрисовки изображения как фонового в GUI.


Java:
    FMLClientHandler.instance().getClient().renderEngine.bindTexture(resource);
       
    Tessellator tessellator = Tessellator.instance;
    tessellator.startDrawingQuads();
    tessellator.addVertexWithUV(x, y + h, 0.0D, 0.0D, 1.0D);
    tessellator.addVertexWithUV(x + w, y + h, 0.0D, 1.0D, 1.0D);
    tessellator.addVertexWithUV(x + w, y, 0.0D, 1.0D, 0.0D);
    tessellator.addVertexWithUV(x, y, 0.0D, 0.0D, 0.0D);
    tessellator.draw();

Весьма удобно, т.к. оно сжимало любого разрешения изображение и умещало в размер GUI. Ибо ванильные drawTextureModal... слишком зависимы от разрешения.

В 1.8.9 Tessellator частично переделали в WorldRender, пытался разобраться как отрисовать через него - все тщетно, подскажите как можно отрисовать изображение в новых версиях? :)
 
Решение
Вот стандартный метод скласса Gui ещё и с учётом UV:
Java:
    /**
     * Draws a textured rectangle at z = 0. Args: x, y, u, v, width, height, textureWidth, textureHeight
     */
    public static void drawModalRectWithCustomSizedTexture(int x, int y, float u, float v, int width, int height, float textureWidth, float textureHeight) {
        float f = 1.0F / textureWidth;
        float f1 = 1.0F / textureHeight;
        Tessellator tessellator = Tessellator.getInstance();
        BufferBuilder bufferbuilder = tessellator.getBuffer();
        bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
        bufferbuilder.pos((double)x, (double)(y + height), 0.0D).tex((double)(u * f), (double)((v + (float)height) * f1)).endVertex()...
243
28
202
Вот стандартный метод скласса Gui ещё и с учётом UV:
Java:
    /**
     * Draws a textured rectangle at z = 0. Args: x, y, u, v, width, height, textureWidth, textureHeight
     */
    public static void drawModalRectWithCustomSizedTexture(int x, int y, float u, float v, int width, int height, float textureWidth, float textureHeight) {
        float f = 1.0F / textureWidth;
        float f1 = 1.0F / textureHeight;
        Tessellator tessellator = Tessellator.getInstance();
        BufferBuilder bufferbuilder = tessellator.getBuffer();
        bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
        bufferbuilder.pos((double)x, (double)(y + height), 0.0D).tex((double)(u * f), (double)((v + (float)height) * f1)).endVertex();
        bufferbuilder.pos((double)(x + width), (double)(y + height), 0.0D).tex((double)((u + (float)width) * f), (double)((v + (float)height) * f1)).endVertex();
        bufferbuilder.pos((double)(x + width), (double)y, 0.0D).tex((double)((u + (float)width) * f), (double)(v * f1)).endVertex();
        bufferbuilder.pos((double)x, (double)y, 0.0D).tex((double)(u * f), (double)(v * f1)).endVertex();
        tessellator.draw();
    }

Привязка текстуры:
Minecraft.getMinecraft().getTextureManager().bindTexture(this.getTexture());

P.S: В 1.8.9 может ещё не быть BufferBuilder...
 
Сверху