【问题标题】:Difficulty drawing a background sprite using LWJGL使用 LWJGL 难以绘制背景精灵
【发布时间】:2014-01-06 17:48:31
【问题描述】:

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

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

这行代码基本上使用我使用 slick-util 编写的类来获取我的背景纹理。然后我将纹理绑定到一个四边形并使用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();

您希望此块绘制四边形以使其覆盖整个屏幕,但实际上并没有这样做。它将它绘制在屏幕中间,如下所示: http://imgur.com/Xw9Xs9Z

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

我尝试过的一些事情:

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

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

  • 以不同的间隔定位精灵或弄乱glTexCoord2d()glVertex2d() 的参数。这只是乱七八糟,看起来不自然。

为什么这个背景精灵不会绘制到正确的大小?

【问题讨论】:

    标签: java opengl lwjgl


    【解决方案1】:

    如果您还没有创建自己的正交投影(即使用glOrtho()),那么您的顶点坐标需要介于 -1 到 +1 之间。现在,您只在该投影的左半边绘图,从而为您提供了这个结果。

    【讨论】:

    • glOrtho(0, width, 0, height, 1, -1); 是我的正交设置。这有什么问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多