在libgdx framework
我们只能使用图像的两个(,,等)的幂,64x256
因为128x32
OpenGL 需要它。
有什么好方法可以“通过”这个限制吗?
例如:使用图像800x480
。
在libgdx framework
我们只能使用图像的两个(,,等)的幂,64x256
因为128x32
OpenGL 需要它。
有什么好方法可以“通过”这个限制吗?
例如:使用图像800x480
。
做设置Texture.setEnforcePotImages(false);
,你就没有限制了。因此,您不能只使用大小为 2 的图片。这只是“可以拥有”而不是“必须拥有”。
问候
您可以使用非锅纹理,例如使用 opengl es2.0。但至少尝试使用锅纹理是一个好习惯。例如,通过将多个图像打包到单个纹理中。这也减少了纹理切换的数量。请参阅:http ://code.google.com/p/libgdx/wiki/TexturePacker 。
在加载图像之前执行此操作:
GLTexture.setEnforcePotImages(false);
这将忽略 power 2 检查。
最佳做法是不要直接使用您的图像。而是使用 LibGdx nightlies 中提供的 TexturePacker 工具来生成 Image Atlas。要了解更多信息:- https://github.com/libgdx/libgdx/wiki/Texture-packer
对于某些纹理,您可以将其设为 2 的幂。
对于 800 X 480 的背景,您可以通过在顶部和右侧添加透明空间将其设置为 1024 x 512。然后在绘制纹理时只需简单地放置在原点上。(左手角)需要注意的一点是,这种技术会导致生成的文件最终变大一点。
调整大小之前 (800 X 480)
调整大小后 (1024 x 512)
当然,这可以在 GIMP 中轻松完成。转到图像-> 画布大小。然后输入所需的宽度和高度。Gimp 会将图像放在透明空间的左上角,但我们希望它在左下角。要移动它,只需输入最高的 Y 偏移量。(您可以输入太大的数字,Gimp 会更正它)
使用 open gl2.0 来消除这个限制