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

3
libgdx框架 中,我们只能使用2的次幂大小的图片(64x256128x32等),因为OpenGL要求如此。有没有好的方法可以“绕过”这个限制呢?例如:使用 800x480 的图片。
6个回答

7

执行 Texture.setEnforcePotImages(false);,然后你就没有限制了。因此,不能仅使用大小为2的幂的图片是不正确的。这只是“可以有”,而不是“必须有”。

祝好


2
谢谢 :) 很高兴看到我们能够通过它。 - Tiago Santos
1
我不知道在使用OpenGL 1.0时可以传递它...谢谢你让我知道。 - Vikalp Jain
不客气。应该能够正常工作。我几天前也遇到了同样的问题。如果它有效,请将其视为答案。谢谢 :) - bemeyer
这与Vipul的答案“GLTexture.setEnforcePotImages(false)”有什么区别? - ashes999

6

您可以使用非2的幂次方纹理,例如使用OpenGL ES2.0。但是至少尝试使用2的幂次方纹理是一个好习惯。例如,将多个图像打包到单个纹理中。这也减少了纹理切换的数量。请参阅:http://code.google.com/p/libgdx/wiki/TexturePacker


3
在加载图像之前,请执行以下操作:

GLTexture.setEnforcePotImages(false);

这将忽略2的幂检查。

这似乎不起作用;在OpenGL 1.4设备上,图像无法渲染。 - ashes999

1

1

对于某些纹理,您可以将其制作为二次幂。

对于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


0

使用OpenGL2.0来消除此限制


1
哦,不错啊,我之前还以为我在用2.0版,但是刚刚查看了一下,发现其实是1.0版,谢谢! :) - Tiago Santos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接