gpt4 book ai didi

java - 如何在子图像上正确使用bind()?

转载 作者:行者123 更新时间:2023-12-02 07:01:25 27 4
gpt4 key购买 nike

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

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

我的代码的一些摘录:

在我的类的构造函数中:

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 缺少此功能吗?这是一个错误吗?或者我只是做错了?

最佳答案

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

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

因此在子图像上使用 bind 并不是很有用。

关于java - 如何在子图像上正确使用bind()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16623545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com