Я пытаюсь создать быстрый генератор изображений, который выполняет множество двумерных преобразований и рендеринг фигур, поэтому я пытаюсь использовать BufferedImage, а затем получить объект Graphics2D для выполнения всего моего рисования. Сейчас моя главная задача - сделать это очень быстро, поэтому я создаю BufferedImage, например так:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsConfiguration gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
BufferedImage bImage = gc.createCompatibleImage(width, height, Transparency.TRANSLUCENT);
Graphics2D graphics = bImage.createGraphics();
Однако, если я это сделаю:
System.out.println(bImage.getCapabilities(gc).isAccelerated());
Выходные данные всегда false , даже если я запускаю JVM с -Dsun.java2d.opengl = True, который печатает строку:
OpenGL pipeline enabled for default config on screen 0
Я делаю BufferedImage, потому что в конце я хочу сохранить его в файл PNG с ImageIO.write (bImage, "PNG", file);
Я могу создать VolatileImage, которое скажет, что оно ускорено, но ImageIO не нравится при попытке сохранить, сказав, что это изображение не может быть преобразовано в RenderedImage. Есть идеи, как получить ускоренное изображение, которое можно сохранить на диск? Кроме того, я не хочу создавать VolatileImage и копировать в BufferedImage для сохранения, так как мои изображения действительно большие, и у меня возникнут проблемы с памятью ...