Аномальная работа BufferBuilder

Статус
В этой теме нельзя размещать новые ответы.
56
2
4
Написал следующий ниже код, хотел протестировать возможность добавления геометрических фигур в майнкрафт (начал с квадрата). Все делал по образцу класса ModelBox. В итоге получил (при прогрузке этой модели) мигающий белый экран/местами на всем экране окна текстуры. Он, почему-то постоянно перерисовывает модель
Java:
Minecraft.getMinecraft().getRenderManager().getSkinMap().get("default").getMainModel().bipedHead.cubeList.clear();
Minecraft.getMinecraft().getRenderManager().getSkinMap().get("default").getMainModel().bipedHead.addChild(new NewPlayerHead().head);
Java:
<...>
public newModelRenderer head=new newModelRenderer(this);
@Override
    public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale)
    {
        head
                .addKvadrat(0,0,  0,0,0,  10,0,0,  10,0,10,   0,0,10)
                .render(scale);
    }
<...>
Java:
<...>
public ModelKvadrat(ModelRenderer renderer, int texX, int texY, float x, float y, float z, float dx, float dy, float dz,float cx, float cy, float cz,float fx, float fy, float fz)
    {
        this.posX1 = x; //public final float
        this.posY1 = y;
        this.posZ1 = z;
        this.posX2 = dx;
        this.posY2 = dy;
        this.posZ2 = dz;
        this.posX3 = cx;
        this.posY3 = cy;
        this.posZ3 = cz;
        this.posX4 = fx;
        this.posY4 = fy;
        this.posZ4 = fz;
        this.textureX=texX;
        this.textureY=texY;
    }
<...>
Java:
<...>
public newModelRenderer addKvadrat(int textureOffsetX, int textureOffsetY,float offX1, float offY1, float offZ1, float offX2, float offY2, float offZ2,float offX3, float offY3, float offZ3, float offX4, float offY4, float offZ4)
    {
        this.kvadrList.add(new ModelKvadrat(this, textureOffsetX, textureOffsetY, offX1, offY1, offZ1,offX2, offY2, offZ2, offX3, offY3, offZ3, offX4, offY4, offZ4));
        return this;
    }
    public void render(float scale){
        this.compileDisplayList(scale);
    }
    private void compileDisplayList(float scale)
    {
        this.displayList = GLAllocation.generateDisplayLists(1);
        GlStateManager.glNewList(this.displayList, 4864);
        BufferBuilder bufferbuilder = Tessellator.getInstance().getBuffer();

        for (int i = 0; i < this.trigonList.size(); ++i)
        {
            ((ModelTKvadrat)this.kvadrList.get(i)).render(bufferbuilder, scale);
        }
        for (int i = 0; i < this.kvadrList.size(); ++i)
        {
            ((ModelKvadrat)this.kvadrList.get(i)).render(bufferbuilder, scale);
        }

        GlStateManager.glEndList();
        this.compiled = true;
    }
<...>
Java:
<...>
@SideOnly(Side.CLIENT)
    public void render(BufferBuilder renderer, float scale)
    {
        //BufferBuilder renderer = Tessellator.getInstance().getBuffer();
        renderer.begin(7, DefaultVertexFormats.OLDMODEL_POSITION_TEX_NORMAL);//GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION
        renderer.pos(this.posX1,this.posY1,this.posZ1).tex(this.textureX+this.posX1,this.textureY+this.posY1).endVertex();
        renderer.pos(this.posX2,this.posY2,this.posZ2).tex(this.textureX+this.posX2,this.textureY+this.posY2).endVertex();
        renderer.pos(this.posX3,this.posY3,this.posZ3).tex(this.textureX+this.posX3,this.textureY+this.posY3).endVertex();
        renderer.pos(this.posX4,this.posY4,this.posZ4).tex(this.textureX+this.posX4,this.textureY+this.posY4).endVertex();
        Tessellator.getInstance().draw();
    }
<...>
Java:
<...>
    at com.falsher.learn.renderer.newModelRenderer.compileDisplayList(newModelRenderer.java:44) ~[newModelRenderer.class:?]
    at com.falsher.learn.renderer.newModelRenderer.render(newModelRenderer.java:36) ~[newModelRenderer.class:?]
    at net.minecraft.client.model.ModelRenderer.render(ModelRenderer.java:146) ~[ModelRenderer.class:?]
    at net.minecraft.client.model.ModelBiped.render(ModelBiped.java:105) ~[ModelBiped.class:?]
    at net.minecraft.client.model.ModelPlayer.render(ModelPlayer.java:78) ~[ModelPlayer.class:?]
    at net.minecraft.client.renderer.entity.RenderLivingBase.renderModel(RenderLivingBase.java:261) ~[RenderLivingBase.class:?]
    at net.minecraft.client.renderer.entity.RenderLivingBase.doRender(RenderLivingBase.java:183) [RenderLivingBase.class:?]
    at net.minecraft.client.renderer.entity.RenderPlayer.doRender(RenderPlayer.java:75) [RenderPlayer.class:?]
    at net.minecraft.client.renderer.entity.RenderPlayer.doRender(RenderPlayer.java:28) [RenderPlayer.class:?]
    at net.minecraft.client.renderer.entity.RenderManager.doRenderEntity(RenderManager.java:390) [RenderManager.class:?]
    at net.minecraft.client.gui.inventory.GuiInventory.drawEntityOnScreen(GuiInventory.java:153) [GuiInventory.class:?]
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:848) [GuiContainerCreative.class:?]
    at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93) [GuiContainer.class:?]
    at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:59) [InventoryEffectRenderer.class:?]
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:687) [GuiContainerCreative.class:?]
    at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:349) [ForgeHooksClient.class:?]
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1168) [EntityRenderer.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1192) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_221]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_221]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_221]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_221]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_221]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_221]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_221]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_221]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
[16:09:59] [main/ERROR]: ########## GL ERROR ##########
[16:09:59] [main/ERROR]: @ Post render
[16:09:59] [main/ERROR]: 1282: Invalid operation
[16:09:59] [main/ERROR]: Couldn't render entity
<...>
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху