2013-03-13 3 views
5

LibGDX에서 밉맵 필터링을 사용하려고해도 이미지가 나타나지 않습니다.libgdx 텍스처 필터 및 밉맵

저는 LibGDX를 처음 사용했습니다. 회전이 가능한 3 개의 축소 된 원이있는 간단한 2 차원 장면이 있습니다. 앤티 앨리어싱을 적용하려면 선형 필터링을 사용하고 싶었습니다. 조언을 구하기 위해 this article을 살펴 보았습니다. 이미지가 크게 스케일 된 경우 밉맵을 사용하여 속도 나 품질을 향상시킬 수 있습니다.

첫 번째 예기치 않은 모습은 모든 이미지가 축소되었지만 magFilter가 선형 인 경우 선형 필터 만 볼 수 있다는 것입니다. 즉 :

이 코드는 축소 된 이미지에 대한 선형 필터가 표시됩니다 :

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

을 whlie이 코드는하지 않습니다 다음 libGDX에 반대 보인다

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

기능 :

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

libgdx가 잘못되었거나 (틀림) 문서가 잘못되었거나 텍스처 필터를 이해하지 못한다는 것을 제외하고는 별 문제가 아니 었습니다. 후자는 특히 밉맵 필터를 시도 할 때 나타납니다.

이 코드는 아무것도

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

이 코드 표시를 표시하지 않을 원인이 있지만, 가장 가까운 필터링

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

와 내가 틀렸다 곳의 모든 설명은 크게 감상 할 수있다. 나는 다른 곳에서 수색했지만, libGDX의 텍스쳐 필터는 매우 구체적이다. 그래서 기사를 제외하고는별로 도움이되지 않았다.

답변

0

동일한 minFilter 및 maxFilter를 사용해보십시오. 나는 비슷한 문제가있어서 넣어두면 TextureFilter.Linear, TextureFilter.Linear 또는 둘 다 MipMap 문제가 해결되었습니다. 희망이 도움이됩니다.

+0

을 Linear 필터에서는 MipMap 필터를 사용했을 때 텍스처가 흰색으로 변했습니다. 나는 이것이 최대화를위한 MipMap 필터가 메모리 적으로 의미가 없기 때문이라고 생각한다. – Kenkron

1

이미지 여러 문제가있을 수 있습니다 : 당신이 354X420 같은 크기의 이미지를 사용하는 경우

  1. 그것은, 2의 전력해야한다, 그것은 작동하지 않습니다. 이 경우에는 512X512 또는 다른 2의 제곱을 취해야합니다.

  2. 밉맵 필터링을 활성화하려면 libgdx에지도 맵을 생성할지 여부를 알려주는 부울 genMipMaps를 사용하여 활성화해야합니다. 그냥 Mitesh 같은

+0

첫 번째 점은 이미지가 2의 거듭 제곱이며, 그렇지 않은 경우에도 OpenGL 2.0 es를 지원하는 모든 것이 여전히 괜찮을 것입니다. – Kenkron

3

은 밉맵을 생성하는 Libgdx을 이야기하지 않기 때문에 작동하지 않습니다 자신의 answer 밉맵 필터 말했다.당신이 자산 관리자를 사용하는 경우

코드 내가이 같은 문제가 있었이

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을 만들 때 밉맵을 사용하도록 지정해야합니다.

이 같은 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/ co.kr/badlogic/gdx/assets/loaders/TextureLoader.TextureParameter.html # genMipMaps 'TextureLoader.TextureParameter textureParameter = new TextureLoader.TextureParameter(); textureParameter.genMipMaps = true; assetManager.load (textureName, Texture.class, textureParameter);',, –