#java #performance #graphics
#java #Производительность #графика
Вопрос:
Я создаю игру на основе «падающего песка», где производительность размещения материалов (пикселей со значениями RGB) очень важна, в настоящее время я размещаю пиксели так: у меня есть буферизованное изображение, и я делаю img.setRGB(x,y,SandColor)
, что, вероятно, не самое быстрое, по нескольким причинам, самое главное, я должен очистить это буферизованное изображение.изображение, из-за которого fps падает с 600 до 144, я очищаю, вызывая этот метод:
private void clear(){
Graphics2D g = img.createGraphics();
g.clearRect(0,0,WIDTH,HEIGHT);
g.dispose();
}
Как я могу улучшить очистку экрана и производительность в целом.
Комментарии:
1. Вы пробовали просто создать новое изображение? (предполагая, что в старом нет ничего, что вы хотите сохранить)
2. Да, и производительность выросла со 140-146 кадров в секунду до 72-128 кадров в секунду, так что не очень
3. Графический интерфейс Java на самом деле не предназначен для такой производительности. Он предназначен для окон и кнопок, а не для высокопроизводительных игр. Вы можете проделать некоторую работу над этим: pavelfatin.com/low-latency-painting-in-awt-and-swing Но в основном, если бы я создавал игру на Java, я бы взял jogl или lwjgl и использовал это.
4. Я попробовал lwjgl, но из-за моего неудачного опыта я значительно ухудшил производительность
5. Другая возможность заключается в использовании
BufferedImage.setData()
. Я не знаю, быстрее ли это, но стоит попробовать.