我无法在桌面上的libGDX中绘制大图像。我有一个尺寸为9494x13082像素的图像并使用batch.draw(texture, 0, 0, width, height);
。而不是纹理libGDX绘制一个黑色方块。如果我将图像压缩到60%或更多,一切正常。我尝试使用TextureRegion
,但这也不起作用。
请告诉我,可能是什么问题。也许我没有足够的RAM?
我在Linux,OpenGL ES 2.0,2GB Ram,Java最小RAM - 1GB,最大--2GB。
答案 0 :(得分:0)
首先:opengl纹理维度等于h& w; 即使你没有宽度等于高度,那么最大的邻接也被考虑用于另一个,并且最终将正方形赋予该存储器。
第二:你的照片最好不要大于2048 * 2048.我认为最大值是4096 * 4096.
opengl 1不支持POT。 libgdx将你的纹理改为POT。所以,最好的纹理尺寸就是牵引力。 使用此参数禁用libgdx的强制POT。
Texture.setEnforcePotImages(false);
现在你的解决方案:
您必须将照片拆分成小块。例如2048 * 2048(POT)然后用TEXTURE_PACKER打包它们。然后在需要的地方画出来。
请注意,如果您使用的是压缩工具,请注意压缩文件与图形压缩不同。所以jpg或png没有更少的内存空间。 你应该使用纹理压缩器,如:etc1,etc2,ktx,....
我为你编写示例代码:
// in this sample my image is 5*4 (5*4 - 2048*2048)
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
batch.draw(texture[i,j], i*2048, j*2048, width, height);
}
}