我正在使用 LWJGL 创建一个类似 Minecraft 的体素引擎,但我在优化方面遇到了一些困难。现在,显然剔除可能会对性能产生很大的积极影响,所以为了进行背面剔除,我做了这样的事情:
if (chunk.getWorld().getGame().cam.getZ() >= zz)
{
glTexCoord2f(1, 1);
glVertex3f(1, 1, 0);
glTexCoord2f(0, 1);
glVertex3f(0, 1, 0);
glTexCoord2f(0, 0);
glVertex3f(0, 0, 0);
glTexCoord2f(1, 0);
glVertex3f(1, 0, 0);
}
它工作正常,直到我遇到一些问题。仍然绘制不可见的面(块之间的面),如果我使用显示列表,这不会完全更新。这是我的问题,如何使用显示列表进行筛选?我试着做 glEnable(GL11.GL_CULL_FACE); 但它给了我这个回报,它似乎剔除正面而不是背面:
这是在没有通过 glEnable 启用剔除的情况下,我的剔除也被禁用(因为列表毫无意义)。一切看起来都很好,但我相信性能可以大大提高。
这是我的代码,如果我遗漏了什么,请询问,如果您需要,我可以上传整个项目:
编辑:我什至复制了一些其他代码来绘制一个立方体,但启用剔除后它看起来仍然不正确。