如何将BufferedImage转换为Texture?

时间:2014-08-17 16:42:44

标签: java graphics textures bufferedimage slick2d

我正在尝试从Slick2D将BufferedImage转换为Texture。 我已经尝试了BufferedImageUtil.getTexture(),但要么我使用它错了,要么它不起作用(只返回32x32图像中的一个棕色像素)

如何将BufferedImage转换为Texture

2 个答案:

答案 0 :(得分:0)

你可能使用它错了,但由于你没有提供你的实现的任何源代码,我只能猜测。

[BufferedImage.get(...)](http://slick.ninjacave.com/javadoc-util/org/newdawn/slick/util/BufferedImageUtil.html#getTexture(java.lang.String,java.awt.image.BufferedImage))的语法是:

public static Texture getTexture(java.lang.String resourceName,
                                 java.awt.image.BufferedImage resourceImage)
                          throws java.io.IOException

Parameters:
  resourceName - The location of the resource to load
  resourceImage - The BufferedImage we are converting
Returns:
  The loaded texture

我在设置自己的字体时使用了一次,并将BufferedImages(由更大图像的splitImage操作产生的所有字符)转换为Textures。它对我来说很好,我忽略了resourceName参数。

所以这对我有用:

BufferedImage image = ImageIO.read(new File(imagePath));
Texture texture = BufferedImageUtil.getTexture("", image); 

查看此方法的源代码,resourceName参数根本不会对该方法产生任何影响。

所以,只需尝试使用我的示例,然后尝试在您的项目中实现它,如果您有任何问题,请在评论中告诉我,我可以帮助您。

查看

修改

您的代码存在一些根本性缺陷:

  • 这就是为什么你的代码根本无法工作/抛出异常)。您在构造函数中使用BufferedImage texture = ImageIO.read(new File(path+ "/texture.png"));加载纹理,这不会更改块中的纹理参数,而只是创建一个本地未使用的变量。通过删除该行中的BufferedImage来解决此问题。

  • (差不多)一切都是静态的。这没有任何意义,因为例如每个块都可以有自己的纹理和参数。

  • 请遵守Java命名约定。类名是上驼峰案例(MyClass),变量名称较低的驼峰案例(myVariable),方法是较低的驼峰案例(myMethod),常量是大写(MY_CONSTANT )和包是小写的(mypackage)。

答案 1 :(得分:-1)

加载纹理:

纹理纹理; texture = TextureLoader.getTexture(" PNG&#34 ;,新FileInputStream(新文件(" res / image.png")));

如果它没有解决您的问题,那么绑定它的方式就会出错。