我正在尝试为我正在创建的新游戏渲染背景图像。为此,我想我只需创建一个简单的四边形并先绘制它,以便它延伸到游戏的背景上。问题是四边形没有绘制到正确的尺寸,并且绘制在屏幕上完全错误的位置。我正在使用 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/