java - LWJGL 无法正确渲染纹理?

标签 java rendering lwjgl

我使用 LWJGL 渲染我正在制作的游戏中的所有内容,并使用它来渲染背景,这没关系,但是当我渲染小于显示器完整尺寸的东西时,它会显示随机线条并且图像是倾斜的。这是截图;

查看分割线大约三分之一的距离,以及左侧的线。

/image/6O9dI.png

这是我的代码;

        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/

相关文章:

java - java中如何知道点击了哪个 View ?

java - 在 recyclerview 中单击某个 Item 时获取数据

java - Gson自定义序列化

android - 如何为 Android 加载 FTGLES(或任何其他文本渲染)

c++ - 在 DX11 中缩放广告牌矩阵

java - Jtable列渲染

java - 如何阻止迭代器跳过第一个输入的值?

java - 当我多次运行基于 LWJGL 的 Java 应用程序时,为什么 NetBeans 会声明内存不足?

opengl - 如何在 Matrix4f 中获取当前的 OpenGL 变换矩阵?

java - 首先 .put() 出现 BufferOverFlowException