2013-03-13 74 views
5

當我嘗試在LibGDX中使用mipmap過濾器時,沒有出現任何圖像。libgdx紋理過濾器和mipmap

我是LibGDX的新手,我有一個簡單的2D場景,帶有三個旋轉縮放的圓圈。爲了消除它們,我想使用線性濾波。對於建議,我期待this article,這表示,對於嚴重縮放的圖像,可以使用mipmap來提高速度或質量。

第一個意想不到的現象是,儘管我所有的圖像都縮小了,但如果magFilter是線性的,我只會看到線性濾鏡。換句話說:

該代碼將顯示縮小的圖像的線性濾波器:

parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear); 

whlie這個代碼將不會:

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.Nearest); 

這似乎相對的libGDX功能:

void com.badlogic.gdx.graphics.Texture.setFilter(TextureFilter minFilter, TextureFilter magFilter) 

這不會影響我,除非它表明libgdx是錯誤的(不太可能),文章錯誤(不太可能),或者我不瞭解紋理過濾器。後者似乎特別有可能當我嘗試mipmap過濾器。

此代碼將導致沒有顯示

parentTexture.setFilter(TextureFilter.MipMapLinearLinear, TextureFilter.Linear); 

這個代碼顯示,但隨着最近的濾波

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.MipMapLinearLinear); 

的我錯地方的任何解釋,將不勝感激。我在其他地方搜索過,但libGDX中的紋理過濾器非常具體,所以除了文章之外,我還沒有找到太多幫助。

回答

0

嘗試使用相同的minFilter和maxFilter。我有一個類似的問題,如果我把 TextureFilter.Linear, TextureFilter.Linear 或兩個MipMap的問題解決了。 希望這有助於。

+0

它的工作對於線性過濾器,但是當我使用MipMap過濾器時,紋理變爲白色。我認爲這是因爲用於最大化的MipMap過濾器沒有意義的記憶。 – Kenkron 2013-03-22 15:18:59

1

可以有多個問題與你的形象:

  1. 它應該是2的冪,如果您使用的是圖像與像354X420大小,它不會工作。在這種情況下,您需要拍攝512X512或其他任何2的電源。

  2. 如果要啓用Mipmap過濾功能,則需要使用布爾型genMipMaps啓用它,該功能會告訴libgdx是否生成地圖圖。

+0

第一點,圖像是兩個冪,即使不是,支持OpenGL 2.0 es的任何東西都可以。 – Kenkron 2013-08-23 15:23:42

3

就像Mitesh在他answer的貼圖過濾器說,因爲你沒有告訴Libgdx產生的貼圖不起作用。

如果您正在使用的資產管理者代碼將是這樣的

TextureParameter param = new TextureParameter(); 
param.genMipMaps = true; // enabling mipmaps 

manager.load("path/to/texfile.png", Texture.class, param); 

Texture tex = manager.get("path/to/texfile.png", Texture.class); 
tex.setFilter(TextureFilter.MipMap, TextureFilter.Nearest); 
6

我有同樣的問題,並修復竟然是出奇的簡單。當您創建Texture時,您需要指定它使用mipmap。

所有您需要做的是通過第二個參數爲Texture構造是這樣的:

Texture myTexture = new Texture(Gdx.files.internal("myImage.png"), true);

您可以查看所有的API文檔在這裏Texture類的構造函數:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Texture.html

+0

對於那些使用'AssetManager'的人,可以通過將'TextureParameter.genMipMaps'設置爲true並在加載紋理時將該紋理參數傳遞給'AssetManager'來實現: https://libgdx.badlogicgames.com/nightlies/docs/api/ com/badlogic/gdx/assets/loaders/TextureLoader.TextureParameter.html#genMipMaps 'TextureLoader.TextureParameter textureParameter = new TextureLoader.TextureParameter(); textureParameter.genMipMaps = true; assetManager.load(textureName,Texture.class,textureParameter);', – 2017-03-26 11:14:06