在Java中,LWJGL/OpenGL是否有一个相当于BuffereImage的子映像来制作精灵图纸?
我正在做一个Java字体测试,基本上得到一个更大的字母表png,然后把它切成更小的部分,得到每个单独的字母作为一个单独的子图像。到目前为止,我使用的是BuffereImage和java。awt。图形
然而,我计划在未来使用LWJGL,并希望对其更加熟悉(在这次测试中,我甚至用LWJGL创建了显示器),并且想知道LWJGL的OpenGL中是否有相当于子图像的图像。我不想太油滑
以下是图片,以防万一: http://i.imgur.com/LeL58.png
这是我正在使用的代码,它可能会有所帮助
package typeandscreen;
*imports go here, cut to save space*
public class Font{
final int width = 78;
final int height = 12;
final int rows = 2;
final int cols = 13;
BufferedImage letters[] = new BufferedImage[rows*cols];
void test(){
try{
final BufferedImage totalImage = ImageIO.read(new File("ABCabcs.png"));
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
letters[(i * cols) + j] = totalImage.getSubimage(
j * width,
i * height,
width,
height
);
}
}
} catch(IOException e){
e.printStackTrace();
}
}
}
# 1 楼答案
我不确定具体的方法,但这里是我支持Spritesheets的方法
首先,我将整个图像加载到一个纹理中,然后指定几个变量,以帮助确定我要使用以下方法显示的精灵表的哪个部分:
最后两个变量允许我使用可变单元格大小的精灵表
然后我的精灵渲染方法如下所示
这将绘制精灵表的正确单元格