我使用 LWJGL 渲染我正在制作的游戏中的所有内容,并使用它来渲染背景,这没关系,但是当我渲染小于显示器完整尺寸的东西时,它会显示随机线条并且图像是倾斜的。这是截图;
查看分割线大约三分之一的距离,以及左侧的线。
这是我的代码;
ImageLoader.STAT_BAR.bind();
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0,0); //TOP LEFT
GL11.glVertex2f(0,0);
GL11.glTexCoord2f(1,0); //TOP RIGHT
GL11.glVertex2f(ImageLoader.STAT_BAR.getTextureWidth(),0);
GL11.glTexCoord2f(1,1); //BOTTOM RIGHT
GL11.glVertex2f(ImageLoader.STAT_BAR.getTextureWidth(), ImageLoader.STAT_BAR.getTextureHeight());
GL11.glTexCoord2f(0,1); //BOTTOM LEFT
GL11.glVertex2f(0, ImageLoader.STAT_BAR.getTextureHeight());
GL11.glEnd();
PS。 ImageLoad 只是我制作的一个类,用于获取图像并加载它们。它非常简单并且适用于所有图像。只是渲染不起作用。
编辑:即使将 GL11.glVertex2f 更改为 2i,它仍然不起作用:/
最佳答案
抱歉,我不太确定问题出在哪里。不幸的是,之后我似乎无法重现它。但我认为应该通过以下方法之一来解决:
- 图像尺寸不受支持
OpenGL严重依赖so图像,其分辨率的宽度和高度是2的幂(当宽度/高度=n*2时)。如果图像文件不符合该规范,LWJGL 可能会表现得很奇怪。另外,不用担心图像文件被压缩。这取决于顶点输入,而不是纹理输入。
- 不支持的图像扩展名
尝试将图像文件另存为非隔行扫描 PNG 文件。 Slick_Util 或您用于加载图像文件的任何内容可能不完全支持您提供给它的图像。
- 修正提示
作为最后的手段,您可以将以下代码行添加到初始化代码中:
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
希望这些技巧之一对您有所帮助。
关于java - LWJGL 无法正确渲染纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8618802/