0
我正在尋找從GPU下載圖像到文件的最快方式,以便以後在同一應用程序中加載(因此不一定是PNG例如)。ImageIO以最快速度比GZIPStream更快
但我注意到,當我直接使用DeflaterStream時,它比使用DeflaterStream的ImageIO慢得多(所以使用ImageIO.write(deflaterstream))。
我做錯了什麼?或者是ImageIO剛剛進行了大量優化/比最快的GZIP壓縮更好?
glBindTexture(GL_TEXTURE_2D, textureId);
int bpp = 4; // Assuming a 32-bit display with a byte each for red, green, blue, and alpha.
ByteBuffer buffer = BufferUtils.createByteBuffer(SAVE_WIDTH * SAVE_HEIGHT * bpp);
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA8, GL_UNSIGNED_BYTE, buffer);
// File file = new File("saves/s-" + layer + ".png"); // The file to save to.
String format = "png"; // Example: "PNG" or "JPG"
// BufferedImage image = new BufferedImage(SAVE_WIDTH, SAVE_HEIGHT, BufferedImage.TYPE_INT_ARGB);
try {
FileOutputStream bOut = new FileOutputStream("saves/p-"+ layer + ".gz");
DeflaterOutputStream gzipOut = new DeflaterOutputStream (bOut, new Deflater(Deflater.BEST_SPEED));
//buffer.flip();
System.out.println("Bytes remaining " + buffer.remaining());
while (buffer.hasRemaining()) gzipOut.write(buffer.get());
gzipOut.close();
bOut.close();
} catch (IOException ex) {
Logger.getLogger(SaveStateManager.class.getName()).log(Level.SEVERE, null, ex);
}
是的,我發現確實越來越字節來提高。 – RobotRock
你可以嘗試從512中獲得2的冪來找到看起來是最優的。 –
嗯,這是一個圖像,所以我想我可以只讀WIDTH * HEIGHT * bitsperpixel。 – RobotRock