java - 使用 LWJGL 绘制背景 Sprite 有困难

标签 java opengl lwjgl

我正在尝试为我正在创建的新游戏渲染背景图像。为此,我想我只需创建一个简单的四边形并先绘制它,以便它延伸到游戏的背景上。问题是四边形没有绘制到正确的尺寸,并且绘制在屏幕上完全错误的位置。我正在使用 LWJGL 和添加的 slick-util 库来加载纹理。

    background = TextureHandler.getTexture("background", "png");

这行代码基本上使用我使用 slick-util 编写的类来获取背景纹理。然后,我将纹理绑定(bind)到四边形并使用 glBegin()glEnd() 绘制它,如下所示:

    // Draw the background.
    background.bind();
    glBegin(GL_QUADS);
    {
        glTexCoord2d(0.0, 0.0);
        glVertex2d(0, 0);

        glTexCoord2d(1.0, 0.0);
        glVertex2d(Game.WIDTH, 0);

        glTexCoord2d(1.0, 1.0);
        glVertex2d(Game.WIDTH, Game.HEIGHT);

        glTexCoord2d(0.0, 1.0);
        glVertex2d(0, Game.HEIGHT);
    }
    glEnd();

您可能希望该 block 绘制四边形以覆盖整个屏幕,但实际上并没有这样做。它将它绘制在屏幕中间,如下所示: /image/ag2m2.jpg

占据屏幕大部分的大型彩色 Sprite 是我的背景,但它并没有像我想要的那样占据整个空间。

我尝试过的一些事情:

  • 检查、双重检查、三次检查以确保 Sprite 的大小和窗口的大小相同

  • 调整 Sprite 的大小,使其比我的目标大小更大或更小。当我这样做时,似乎没有什么改变。

  • 以不同的间隔定位 Sprite ,或者弄乱 glTexCoord2d()glVertex2d() 的参数。这太乱了,看起来不自然。

为什么这个背景 Sprite 不能绘制到正确的尺寸?

最佳答案

如果您尚未创建自己的正交投影(即使用 glOrtho()),那么您的顶点坐标范围需要从 -1 到 +1。现在您只在该投影的左半部分上进行绘制,从而得到这个结果。

关于java - 使用 LWJGL 绘制背景 Sprite 有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20956042/

相关文章:

java - opengl中z坐标的值是多少

java - 如何加载 VBO 并在单独的 Java 线程上渲染它?

java - 如何避免在java文件中硬编码字符串?

java - 确保 String 没有特定字符 (.)

Javafx 从 jar 加载图像

OpenGL - 需要一个简单的概念说明

c++ - 使用翻转正交渲染 FreeType 文本,字形顶部和基线之间的差异

java - 如何在 OkHttp 中保持连接或维护 session

opengl - 早期模板剔除,无需早期 z 剔除

eclipse - 使用 JNI 依赖项、应用程序和 eclipse 插件构建 Gradle