libGDX 不绘制大尺寸纹理

libDGX doesn't draw texture with big dimension

我无法在 libGDX 的桌面上绘制大图。我有一个尺寸为 9494x13082 像素的图像并使用 batch.draw(texture, 0, 0, width, height);。而不是纹理 libGDX 绘制一个黑色方块。如果我将图像压缩到 60% 或更多,一切正常。我尝试使用 TextureRegion,但这也不起作用。 请告诉我,可能是什么问题。也许我没有足够的内存?

我在 Linux 工作,OpenGL ES 2.0,2GB Ram,Java 的最小 RAM - 1GB,最大 - 2GB。

首先:opengl 纹理尺寸等于 h&w; 就算你没有宽等于高,那么最大的邻接也考虑给另一个,最终方块给那个内存。

第二:你的图片最好不要大于2048*2048,我觉得最大是4096*4096

opengl 1 不支持 POT。 libgdx 把你的材质改成POT。所以,最好的纹理尺寸是牵引力。 使用此参数禁用 libgdx.

的强制 POT
Texture.setEnforcePotImages(false);

现在您的解决方案:

您必须将照片分割成更小的部分。例如 2048 * 2048(POT) 然后用 TEXTURE_PACKER 打包。然后把它画在你需要的地方。

请注意,如果您使用的是压缩工具,请注意压缩文件与图形压缩不同。所以你没有更少的内存 space 与 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);
        }
    }