2015-01-16 4 views
1

OpenGL 2.0과 libGDX를 사용할 때 텍스쳐 이미지의 파워는 2가되어야한다는 것을 알고 있습니다. 이 내용은이 페이지 https://github.com/libgdx/libgdx/wiki/Textures,-textureregion-and-spritebatch에 있습니다.LibGDX, OpenGL 2.0 및 텍스처가 2의 제곱이되어야합니까?

내가 이해할 수없는 한 가지는 이것이 항상 사실이 아니라는 것입니다. 스플래시 화면이있는 응용 프로그램을 만들고 있는데 사용하는 텍스처가 아래처럼 클래스 선언 (스크린)에 직접로드됩니다.

private TextureRegion textureRegion = new TextureRegion(
     new Texture(Gdx.files.internal("images/splashLogo.png")) 
); 

이 이미지의 크기는 분명히 2의 배수가 아닙니다. 그러나 모두 괜찮습니다.

내 게임에서 AssetManager를 사용하여 게임에 질감 등을로드하고 있지만 사용하는 텍스처가 128x32, 512x512 등의 크기^2 여야합니다. 그렇지 않으면 작동하지 않습니다.

내 자산 관리자의 예제 텍스처 세트는 아래에 있습니다.

shapes = TextureRegion.split(Assets.assetManager.get("images/shapeSprite.png", Texture.class), 64, 64); 
    for (TextureRegion[] shapeSet: shapes) { 
     for (TextureRegion shape: shapeSet) { 
      shape.flip(false, true); 
     } 
    } 

텍스처가 512x512이고 그렇지 않은 경우 textureRegion이 표시되지 않습니다.

일부 텍스처의 크기가 2의 제곱이어야하고 일부 텍스처의 크기가 다른 이유는 무엇입니까?

답변

4

엄격한 2의 (POT) 크기 요구 사항은 OpenGL ES 1.x에만 해당됩니다. libGDX는 libGDX 버전 1.0.0부터이 OpenGL ES 버전을 더 이상 지원하지 않습니다. 따라서 텍스처에 대한 엄격한 POT 요구 사항이 더 이상 없습니다.

그러나 GPU에 따라 일부 POT 텍스처 크기에서는 일부 기능 (예 : 텍스처 배치)이 지원되지 않을 수 있습니다. 또한 실제적으로 비 POT 크기의 텍스처는 가장 가까운 POT 크기와 동일한 양의 메모리를 사용합니다.

이러한 이유로 인해 여러 텍스처가 아틀라스에 포장되어야하므로 항상 POT 크기의 텍스처를 사용하는 것이 좋습니다.

은 참조 : 그 질문에 대답하지 않는 경우 Is there any way to ignore libgdx images Limitation? (images must be power of two)

는, 다음 질문의 문구를 수정 고려하고 당신이 "가 작동하지 않습니다"로 무슨 뜻인지 설명해주십시오.

+0

안녕하십니까. Xoppa 님, LibGDX 위키의 'Textures, textureregion and spritebatch'페이지를 정보가 오래된 것으로부터 가져온 정보와 함께 자유롭게 업데이트했습니다. –

관련 문제