0
我试图使用内置的ImageIO.read(file)方法为我的lwjgl项目加载纹理。当调用ImageIO.read(文件)时程序块
创建一个新的File对象起作用,它存在于我有问题的ImageIO.read()方法中。
public Texture(String fileName) {
System.out.println("Texture init called");
try {
File img = new File("brick.png");
System.out.println(img.exists()); //Returns true
System.out.println(img.getAbsolutePath()); //Returns the correct path "/Users/griffinbabe/Documents/workspace/LWJGLTest/brick.png"
System.out.println(img.canRead()); //Returns true
Image im = ImageIO.read(img); //Blocks here, letting no printStackTrace, and letting the program running.
System.out.println("Yes you did it!");
} catch (Exception e) {
e.printStackTrace();
}
这很奇怪我从来没遇到过这个问题。如果它可以帮助,我在mac OS Sierra上运行这个,我使用的是openGL。
这里是主类,其中新的Texture对象被初始化。
public Window(int sizeX, int sizeY,Game game) {
this.game = game;
if (!glfwInit()) {
throw new IllegalStateException("GLFW failed to initialize.");
}
window = glfwCreateWindow(sizeX,sizeY,"Game3Graphics",0,0);
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
if (window == 0) {
throw new IllegalStateException("Failed to create window.");
}
GLFWVidMode videoMode = glfwGetVideoMode(glfwGetPrimaryMonitor());
glfwSetWindowPos(window, (videoMode.width()-sizeX)/2, (videoMode.height()-sizeY)/2);
glfwShowWindow(window);
glfwMakeContextCurrent(window);
GL.createCapabilities();
glEnable(GL_TEXTURE_2D);
Texture texture = new Texture("brick.png"); //Here is the init call.
System.out.println("texture finished loading");
任何想法它可能是什么?
谢谢。
[编辑]
奇怪的是,ImageIO.read()方法的工作,如果我创建与glfwCreateWindow一个窗口之前调用它()。它与lwjgl有关,而不是文件访问。
与用户目录相关的文件“brick.png”在哪里?为什么你首先使用文件而不是资源? –
@HovercraftFullOfEels我想还有其他的方法来加载图像。我使用这个,因为它非常简单。 brick.png文件放置在eclipse项目文件夹(与'src'相同的文件夹)。我一直这样做,这是我第一次遇到问题。 – GriffinBabe
@ CraigR8806 LWJGL不再支持SlickUtils,因为LWJGL 3 – GriffinBabe