Я делаю игру на Java2D и пытаюсь смешать слои одного и того же изображения в альфа-направлении, чтобы создать нечто похожее на размытие.
Использование AlphaComposite действительно медленное, и средняя частота кадров снижается с170–90, это может не показаться проблемой (так как большинство игр работают на 60), но иногда частота кадров падает ниже 45 (возможно, потому что я использую немного больше моего компьютера? Не уверен), и кажетсякак много для одного эффекта, который я пытаюсь применить.
В моем конструкторе у меня есть
AlphaComposite blurAlpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
AlphaComposite opaque = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1);
, затем в главном цикле: (чтобы быть понятным, g это Graphics2Dобъект, а игра - это предварительно обработанное изображение игры)
g.setComposite(blurAlpha);
g.drawImage(game, -1, 0, null);
g.drawImage(game, 1, 0, null);
g.setComposite(opaque);
Сначала я подумал, что падение частоты кадров происходит из-за двойного рисования изображения, но когда я удаляю линии setComposite
, частота кадровидет до 150.