2016-12-16 4 views
1

Я собираюсь заставить BitmapData гладко.flex/as3 - Как заставить BitmapData гладко не рисовать

но я не могу сделать BitmapData.draw() так как исполнение приложения.

Если я рисую растровое изображение, приложение замедляется до следующего шага. (это на гибком мобильном телефоне)

, так что мне нужно, чтобы заставить bitmapData гладко, не перерисовывая bitmapData.

(также, я не могу использовать Bitmap(bitmapData).smoothing)

что я могу сделать для этого?

+0

попробуйте использовать текстуры и графический рендеринг, посмотрите на [рамки скворца] (https://www.google.com/search?q=as3+starling+smooth+ текстура) –

ответ

1

Вы принимаете единственный способ сгладить пиксели в bitmapData путем повторного рисования контейнера bitmap с сглаживающим булевым значением, равным true, в BitmapData.Draw().

Решение должно установить smoothing на контейнер Bitmap сам объект, а не внутренний bitmapData. Позже вы всегда можете обновить bitmapData, но объект Bitmap всегда будет сглажен.

Logic это то, как показано ниже:

var myBMPData : BitmapData = new BitmapData(320, 240); 
myBMPData.draw(someThing); //just draw, no smoothing here for BitmapData 

var myBMP : Bitmap = new Bitmap(myBitmapData); 
myBMP.smoothing = true; //use smoothing on Bitmap that holds bitmapData 

addChild(myBMP); 
+0

спасибо, но я сказал, что не могу использовать Bitmap.smoothing там ... – idnumberone

+0

Нет, вы сказали, что не можете использовать (цитату) 'Bitmap (bitmapData). Smoothing', который по-прежнему нацеливается на bitmapData. Если BMPdata 100w x 100h, вы вынуждаете процессор обрабатывать 10 000 элементов (пикселей). Я предлагаю «Bitmap.smoothing», который нацелен только на 1 элемент для работы с ЦП и не участвует в 'draw'ing. Кажется странным, но так оно и есть ... Я вижу это даже в 3D-графическом программном обеспечении (1 миллион полисов, выбранных для перемещения = медленный объект VS 1, содержащий те же миллионы polys = fast). Таким образом, ** плавный контейнер ** не отдельные пиксели (битмапдаты). Результат визуального эффекта такой же. –

+0

Показать пример кода ** как воссоздать вашу проблему ** ... Есть ли техническая причина или ограничение, почему вы вообще не можете использовать «Bitmap.smoothing»? В противном случае вам нужно написать собственный двухлинейный фильтр для сглаживания. Попробуйте использовать какой-нибудь gpu [** Pixel Bender smoother **] (http://www.smart-page.net/blog/2010/02/21/smartaa-reconstruct-anti-aliasing-with-pixel-bender/) в вашем проекте AS3. Проверьте онлайн-учебники, как импортировать PBJ для использования в качестве объекта '= new shader()' в коде AS3. В любом случае, это один из примеров. –

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