Minecraft透明渲染隐藏块

时间:2017-11-12 09:25:21

标签: minecraft-forge opengl-1.x

我迷失了为什么当我从南方或东方看时,我的纹理呈现出预期的效果,但是当从北方或西方看时,它隐藏在它们后面的物体。

我有一个隐藏的块,它会在其中呈现多个项目,并且遇到具有半透明纹理的块的问题。尝试切换基本块和纹理块的所有块属性(例如渲染类型,图层,不透明),并在渲染时尝试不同的混合选项。

Forge版本1.12

普通视图 Normal view from south 破碎的视图 Broken view from north 渲染器

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://use.fontawesome.com/c6435311fd.js"></script>
<div id="img">
    <span class="rating">
        <i id="star1" class="fa fa-star"></i>
        <i id="star2" class="fa fa-star"></i>
        <i id="star3" class="fa fa-star"></i>
        <i id="star4" class="fa fa-star"></i>
        <i id="star5" class="fa fa-star"></i>
    </span>
</div>

1 个答案:

答案 0 :(得分:0)

在阅读transparency后 - 我有深度掩码和缺少alpha函数。

    GlStateManager.enableBlend();
    GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    if (transparent) {
        GlStateManager.depthMask(false);
        GlStateManager.alphaFunc(GL11.GL_LESS, 1.0F);
        itemRenderer.renderItem(block.stack, model);
        GlStateManager.depthMask(true);
    } else {
        GlStateManager.alphaFunc(GL11.GL_EQUAL, 1.0F);
        itemRenderer.renderItem(block.stack, model);
    }
    GlStateManager.disableBlend();

要记住的事情:

最后渲染透明物品,否则它们将无法正确显示&#34;内部&#34;。

    renderItem(new GetBlock("minecraft:jukebox"), 0.5F, false );
    renderItem(new GetBlock("mymod:blue"), 1F, true /*transparent*/);

实体项还需要混合函数GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);,因为堆栈上的第一个实体项会在某些角度出现故障:

enter image description here