2010-04-21 2 views
5

Я делаю игру в java и использую BufferedImages для отображения содержимого на экран. У меня были проблемы с производительностью на низкоскоростных машинах, где игра должна была запускаться, поэтому я переключился на VolatileImage, который, как правило, быстрее. За исключением того, что они фактически замедляют все это.Java: VolatileImage медленнее, чем BufferedImage

Изображения создаются с помощью GraphicsConfiguration.createCompatibleVolatileImage (...) и нарисованы на экране с помощью Graphics.drawImage(...) (перейдите по ссылке, чтобы узнать, какой именно). Они нарисованы на холсте, используя двойную буферизацию.

У кого-то есть представление о том, что здесь происходит не так?

+0

Я заметил то же самое. – Hardcoded

+0

Если на графической карте хватает памяти, это явно не поможет. IIRC, «BufferedImage» имеет некоторые ускорения, поэтому разница может быть не такой большой, как когда-то была. –

+0

@Norswap: Я действительно думаю, что найти отличный ответ на это состоит в том, чтобы найти первоклассные Java-игры с открытым исходным кодом (конечно же есть некоторые) или отличную отличную демонстрацию Java (из «демонстрационной сцены») и попытаться понять, что они сделали. Я давно использовал программные игры и демоверсии * очень * экзотического оборудования (например, Amiga, SNES, режим 13x и т. Д.), И я до сих пор не знаю, как правильно «нажимать пиксели» на Java. Это еще один домен, где Java «перегружена» и излишне сложна. Я не задерживаю дыхание для кого-то здесь, на SO, чтобы действительно помочь вам. – SyntaxT3rr0r

ответ

6

Скорее всего, ваш код смешивает ускоренные и неускоренные операции.

Это document является обязательным для чтения. Раздел 3.2 в особенности необходим для всех, кто работает с ускоренной графикой Java.

+0

Возможно ли, что масштабирование (в смысле отсечения, см. Ссылку в вопросе), изображение является такой неускоренной операцией? Поскольку я использую листы спрайтов, каждая ничья должна эффективно выбирать часть изображения для рисования на экране. – Norswap

 Смежные вопросы

  • Нет связанных вопросов^_^