GL glNewList 渲染列表似乎无视我重置比例

GL glNewList Render list seemingly ignoring me resetting the scale

正如标题所说,我在重置我的 GL 列表上的比例时遇到了一些麻烦,所以当渲染代码使用列表调用下一个时,它比应该的小,这导致它会不断变小,直到消失。

这是我的代码,没有渲染命令。为了充分展示我的尝试,我将首先简化代码。我正在为 Minecraft Beta 1.7.3 进行自定义字体代码修改,除了这个 ONE 部分之外,它工作得很好......它使用多个图像正确缩放字体。不管怎样,我们走吧。

        for(int i1 = 0; i1 < ChatAllowedCharacters.allowedCharacters.length(); i1++)
        {
            updateFontImage(i1, renderengine, tex);
            fontTextureName = getTextureId(i1, renderengine);
            GL11.glNewList(fontDisplayLists + i1 + (i1 > 256 ? 512 : 0), 4864 /*GL_COMPILE*/);
            GL11.glBindTexture(3553, fontTextureName);
            tessellator.startDrawingQuads();
            int l1 = (i1 % 16) * (textureWidth/16);
            int k2 = (i1 / 16) * (textureWidth/16);
            float f = (float)(textureWidth/16);
            float f1 = 0.0F;
            float f2 = 0.0F;
            tessellator.addVertexWithUV(0.0D, 0.0F + f, 0.0D, (float)l1 / (float)(textureWidth) + f1, ((float)k2 + f) / (float)(textureWidth) + f2);
            tessellator.addVertexWithUV(0.0F + f, 0.0F + f, 0.0D, ((float)l1 + f) / (float)(textureWidth) + f1, ((float)k2 + f) / (float)(textureWidth) + f2);
            tessellator.addVertexWithUV(0.0F + f, 0.0D, 0.0D, ((float)l1 + f) / (float)(textureWidth) + f1, (float)k2 / (float)(textureWidth) + f2);
            tessellator.addVertexWithUV(0.0D, 0.0D, 0.0D, (float)l1 / (float)(textureWidth) + f1, (float)k2 / (float)(textureWidth) + f2);
            tessellator.draw();
            GL11.glTranslatef(charWidth[i1], 0.0F, 0.0F);
            GL11.glEndList();
        }

如果您不知道 Minecraft 的代码是什么样的,请让我解释一下。 Tessellator 代码是命令 Tesselator 进行绘制的代码,据我所知,它本质上是一个 OpenGL 助手,可简化使用 OpenGL 的绘图。在我看来,这是非常聪明的。 updateFontImage 和 fontTextureName 正是我用来获取字体纹理图像的。

我确定所有代码都在渲染列表开始和结束命令中,而不是之前或之后。是的,应该出现不同的值,但为了测试我需要放置命令的位置,我现在只使用 .5 以确保无论使用什么图像,所有代码都是相同的,作为测试的控制。 所以,我试过了:

无论我多么努力地加载游戏,渲染的每个字母都比最后一个小,就好像我从未尝试过重置比例一样。我该如何解决?我完全被难住了。我知道每个字母都可以正确地单独呈现,因为每个字母都可以分配自己的字体图像。

提前感谢您的回答。我会尝试任何人告诉我的,或者告诉他们我是否已经尝试过但忘记将其放在上面的列表中。

作为参考,这是我尝试过的几乎所有内容的愚蠢结果。Silly Text

镶嵌器四边形随着图像尺寸的增大而变大,游戏最初通过将它们缩小以获得更大的字体表来解决此问题。但是,我可以改为强制它以默认大小呈现,而更高分辨率的字母正好适合。