Относительная производительность нативного C ++ для Flash для пиксельного проталкивания - PullRequest
0 голосов
/ 20 октября 2010

Я пытался получить примерное представление о том, насколько медленнее Flash работает на двухмерной графике с чистым пиксельным подталкиванием, чем делал то же самое в SDL или другой встроенной библиотеке. Например, если у меня есть приложение Flash / Flex на современном ПК, в котором каждый кадр выполняет двухмерный цикл и непосредственно считывает / устанавливает каждый пиксель, какой эквивалентный ПК даст такую ​​же производительность для родного приложения C ++? Может быть, классический Pentium, PII, PIII? Я знаю, что это, вероятно, не совсем линейные отношения, но должно быть возможно получить какую-то идею.

Ответы [ 2 ]

4 голосов
/ 20 октября 2010

Последние версии Flash говорят напрямую с видеодрайвером, поэтому разница намного меньше, чем вы думаете.

2 голосов
/ 20 октября 2010

Это было бы очень, очень медленно для обычной 2d перезаписи с использованием getPixel () / setPixel () в каждом кадре. Вы в принципе не можете выдвигать пиксели и ожидать производительности в реальном времени.

Однако это всегда зависит от того, что вы пытаетесь сделать. Многие из наиболее распространенных методов анимации могут быть реализованы с помощью встроенных (ускоренных игроками) функций, и это быстрее во Flash. Например, если вы хотите, чтобы прямоугольник перемещался по экрану, вы бы не помещали его в экземпляр BitmapData, вы могли бы просто перемещать собственное поле; если вы хотите преобразовать видео, чтобы размыть его, вы можете использовать собственный фильтр BlurFilter; если вы хотите изменить общий цвет изображения, вместо этого вы можете использовать цветовую матрицу; если вы хотите применить к чему-то 3d-преобразование, вы можете использовать нативные 3d-преобразователи; и так далее и тому подобное.

Для серьезного, низкоуровневого пиксельного нажатия вы также можете использовать Pixel Bender, язык пиксельных шейдеров Flash. Это может сделать намного более быстрое нажатие на пиксели (скорости уровня C), но оно ограничено. Он отлично работает, если вы хотите, скажем, создавать свои собственные фильтры / шейдеры или режимы наложения, но это не для вещей уровня SDL. Люди создали демонстрационные демонстрационные примеры, такие как демонстрации лучевого вещания с низким разрешением, но это самое лучшее, что вы можете сделать.

Если вам нужна реальная производительность C и вы думаете о SDL или о чем-то подобном, вам, возможно, будет лучше, если вы на самом деле делаете свои вещи в C и используете Alchemy для компиляции. Например, есть порт SDL для Flash или даже полные порты ID 101 Software DOOM / Hexen / Heretic - все используют собственный код с некоторыми изменениями для пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...