有没有办法忽略libgdx图像限制? (图像必须是2的幂)

时间:2013-07-12 09:27:30

标签: android opengl-es libgdx game-engine

libgdx framework中,我们只能使用两个图像的力量(64x256128x32等)因为OpenGL需要它。

有没有什么好方法可以通过"这个限制?
例如:使用图片800x480

6 个答案:

答案 0 :(得分:7)

设置Texture.setEnforcePotImages(false);并且您不再拥有限制。所以你不能使用尺寸为2的图片。它只是一个“可以拥有”而不是“必须拥有”。

此致

答案 1 :(得分:6)

你可以使用非锅纹理,例如通过使用opengl es2.0。但是至少尝试使用罐纹理是一种好习惯。例如,通过将多个图像打包到单个纹理中。这也减少了纹理切换的数量。请参阅:http://code.google.com/p/libgdx/wiki/TexturePacker

答案 2 :(得分:3)

在加载图片之前执行此操作:

  

GLTexture.setEnforcePotImages(假);

这将忽略电源2检查。

答案 3 :(得分:1)

最佳做法是不要直接使用您的图像。而是使用在LibGdx nightlies中可用的TexturePacker工具来生成Image Atlas。要了解更多信息: - https://github.com/libgdx/libgdx/wiki/Texture-packer

答案 4 :(得分:1)

对于某些纹理,你可以使它成为2的力量。

对于800 X 480的背景,您可以通过向顶部和右侧添加透明空间使其为1024 x 512。然后在绘制纹理时只需将其放在原点上即可。 (左上角)需要注意的一点是,这种技术会导致生成的文件变得更大。

调整大小前(800 X 480)

original image

调整大小后(1024 x 512)

later image

当然,这可以在GIMP中轻松完成。转到图片 - >画布的尺寸。然后输入所需的宽度和高度。 Gimp会将图像放在透明空间的左上角,但我们希望它位于左下角。要移动它,只需输入最高的Y偏移量。 (您可以输入更大的数字,Gimp会更正它)

Set Image Canvas Size dialog

答案 5 :(得分:0)

使用open gl2.0删除此限制