我在将JPEG加载到球体上时遇到问题。目前,我唯一能做到这一点的方法是将图像与加载它的类放在同一个包中。问题是,我不想在一个包下有500多个纹理与类混合。出于组织原因,我宁愿将它们放在文件夹和子文件夹中。
如果纹理在同一个包中,这是有效的:
InputStream iStream = null;
try
{
iStream = getClass().getResourceAsStream(imageFile);
TextureData data = TextureIO.newTextureData(iStream, false, null);
testTex[i] = TextureIO.newTexture(data);
testTex[i].getImageTexCoords();
testTex[i].setTexParameteri(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR);
testTex[i].setTexParameteri(GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_NEAREST);
iStream.close();
...
拍摄图像的方法以的形式拍摄
String[] texture = { "bar1.jpg", "bar2.jpg" }; // imageFile is whichever is called
由于上面的代码工作得很好,的缺点是每个纹理都必须与调用纹理的类存储在同一个包中但我想从我的项目中的一个文件夹中调用这样的纹理:
String[] texture = { "res/foo/bar2.jpg", "res/foo/bar2.jpg" };
如何修改上面的代码以在项目中的文件夹中查找纹理?
// note leading '/' - indicates 'search from root of class-path'
String[] texture = { "/res/foo/bar2.jpg", "/res/foo/bar2.jpg" };
// ...
URL iUrl = getClass().getResource(texture[0]);
TextureData data = TextureIO.newTextureData(iUrl, false, "jpg");
在本例中,我们在newTextureData(URL,boolean,String)
中使用TextureIO
API加载方法的重载形式。
我认为你的问题只是在res.这肯定会起作用:
this.getClass().getResource("/res/img.jpg");
只要res包在src文件夹中。