0

我在使用 Slick2Dbind()功能然后尝试在 OpenGL 中绘制图像时遇到了很多麻烦。

我正在使用ImagegetSubImage. 如果我使用graphics.drawImage()它完美地绘制这个图像的方法。但是,如果我使用bind(),它会绑定Image我从中获取此子图像的全部内容,那么我可以不绑定子图像还是我做错了?

我的代码中的一些摘录:

在我的类的构造函数中:

ui = new Image("resources/img/ui/ui.png");
// I've tried with SpriteSheet too but Image is more appropriate for my purposes.
border_t = ui.getSubImage(12, 24, 12, 12);

在渲染方法中:

border_t.bind();
graphics.setColor(Color.white);
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(12, 0);
GL11.glTexCoord2f(9, 0);
GL11.glVertex2f(108, 0);
GL11.glTexCoord2f(9, 1);
GL11.glVertex2f(108, 12);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(12, 12);
GL11.glEnd();

这使得整个 spritesheet 缩小了 9 倍,而不是我希望的顶部边框。

Slick2d 是否缺少此功能?它是一个错误吗?还是我只是做错了?

4

1 回答 1

2

“子图像”是 Slick2D 的构造,并且只有Slick2D。一旦您开始直接与 OpenGL 对话,您现在使用的是OpenGL概念,而不是 Slick2D 概念。

那里没有“子图像”;只有纹理。您不能绑定纹理的一部分。你必须绑定整个事情。如果要渲染纹理的子集,则需要相应地调整纹理坐标以仅选择该部分。

所以bind在子图像上使用并不是很有用。

于 2013-05-18T12:00:04.533 回答