簡體   English   中英

libgdx紋理過濾器和mipmap

[英]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);

您的圖片可能存在多個問題:

  1. 它應該是2的冪,如果你使用像354X420大小的圖像,它將無法工作。 在這種情況下,您需要拍攝512X512的圖像或2的任何其他功率。

  2. 如果要啟用Mipmap過濾,則需要使用boolean genMipMaps啟用它,告知libgdx是否生成mapmaps。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM