Медленное рисование Java2D на интегрированной графике
Я работаю над простой 2D игрой, рендеринг которой осуществляется через API Java2D. Я заметил, что когда я пытаюсь нарисовать на интегрированной видеокарте, производительность падает.
Я тестировал эту игру как на своей основной установке с новым ATI Radeon, так и на своем 5-летнем ноутбуке, который также имеет (невероятно устаревший) Radeon. На обоих я получаю хороший FPS, но когда я пытаюсь использовать встроенную графику HD 4000 моего Intel i5, он набирает около 20 FPS.
Я использую полноэкранный эксклюзивный режим.
В любой момент я рендерил около 1000 изображений одновременно.
Досадно, что когда я пытаюсь получитьAvailableAcceleratedMemory (), он просто возвращает -1 для этой карты и, похоже, отказывается ускорять любые изображения.
У кого-нибудь есть идеи как решить эту проблему?
Код рендеринга:
Graphics g = bufferStrategy.getDrawGraphics();
g.drawImage(img, x, y, img.getWidth(), img.getHeight(), null)
g.dispose();
bufferStrategy.show();
Код загрузки изображения:
BufferedImage I = null;
I = ImageIO.read(new File(currentFolder+imgPath));
imgMap.put(imgIdentifier, I);
Изображения хранятся в хэш-карте BufferedImages, идентифицируемой строками, поэтому, когда объект должен рисовать и отображать изображение, он просто получает его из хэш-карты и рисует его. В текущем случае сущности в основном представляют собой напольные и настенные плитки, поэтому они никогда не меняются (и, следовательно, не нужно получать изображение из хэш-карты, кроме самого первого раза).
РЕДАКТИРОВАТЬ - Я включил метод MadProgrammer, но он не изменил мой FPS.