2013-02-20 42 views
1

我在將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" }; 

我將如何修改上面的代碼項目中的文件夾中尋找紋理?

回答

2
// 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裝載方法的重載形式。

+0

什麼數據類型是「iUrl?」 – SpicyWeenie 2013-02-20 06:36:33

2

我認爲你的問題只是你在水庫前缺少一個斜線。這肯定會工作:

this.getClass().getResource("/res/img.jpg"); 

只要res包在你的src文件夾中。