[英]libgdx texture filters and mipmap
當我嘗試在LibGDX中使用mipmap過濾時,不會出現任何圖像。
我是LibGDX的新手,我有一個簡單的2D場景,有三個旋轉的縮放圓圈。 為了對它們進行反混淆,我想使用線性過濾。 對於建議,我查看了這篇文章 , 該文章說,對於大規模縮放的圖像,可以使用mipmap來提高速度或質量。
第一個意想不到的表現是,盡管我的所有圖像都按比例縮小,但我只會看到一個線性過濾器,如果magFilter是線性的。 換一種說法:
此代碼將顯示縮小圖像的線性過濾器:
parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear);
這個代碼不會:
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中的紋理過濾器非常具體,所以除了文章之外,我還沒有找到太多幫助。
我遇到了同樣的問題,修復結果非常簡單。 創建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
就像Mitesh在他的回答中所說的那樣,mipmaps過濾器不起作用,因為你沒有告訴Libgdx生成mipmap。
如果您使用資產管理器,代碼將是這樣的
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);
您的圖片可能存在多個問題:
它應該是2的冪,如果你使用像354X420大小的圖像,它將無法工作。 在這種情況下,您需要拍攝512X512的圖像或2的任何其他功率。
如果要啟用Mipmap過濾,則需要使用boolean genMipMaps啟用它,告知libgdx是否生成mapmaps。
嘗試使用相同的minFilter和maxFilter。 我有一個類似的問題,如果我把TextureFilter.Linear,TextureFilter.Linear或兩個MipMap都解決了問題。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.