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);
}
}
我无法在 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.
的强制 POTTexture.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);
}
}