2016-12-16 1 views
1

BitmapData을 부드럽게 처리 할 것입니다.flex/as3 - 비트 맵 데이터를 부드럽게 그리지 않게하는 방법

그러나 응용 프로그램의 성능 때문에 BitmapData.draw()을 수행 할 수 없습니다.

비트 맵을 그릴 경우 응용 프로그램이 다음 단계로 느려집니다. (플렉스 모바일)

그래서 비트 맵 데이터를 다시 그리지 않고 부드럽게 만드는 방법이 필요합니다.

(또한, 내가 Bitmap(bitmapData).smoothing을 사용할 수 없습니다)

나는이를 위해 무엇을 할 수 있습니까?

+0

[찌르레기 프레임 워크]을 찾아 텍스처와 GPU 렌더링을 사용하려고 (https://www.google.com/search?q=as3+starling+smooth+ :

논리는 다음과 같은 것입니다 텍스처) –

답변

1

컨테이너를 smoothing 부울을 true로 설정하고 BitmapData.Draw()에 다시 그려서 비트 맵 데이터에서 픽셀을 매끄럽게하는 유일한 방법이라고 가정합니다.

해결 방법은 내부에 bitmapData이 아닌 Bitmap 개체 자체에 smoothing을 설정하는 것입니다. 나중에 언제든지 bitmapData를 업데이트 할 수 있지만 Bitmap 객체는 항상 매끄럽게 처리됩니다.

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

아직 bitmapData 자체를 목표로 삼고있는'Bitmap (bitmapData) .smoothing'을 사용할 수 없다고 말한 적 없습니다. BMPdata가 100w x 100h이면 CPU가 10,000 항목 (픽셀)을 처리하도록합니다. 나는'Bitmap.smoothing'을 제안하는데 이것은 CPU 노력을위한 오직 하나의 아이템만을 대상으로하고'draw'ing은 관련이 없습니다. 이상하게 보입니다.하지만 그게 어떻게 ... 3D 그래픽 소프트웨어에서도 볼 수 있습니다. (이동을 위해 선택된 1 백만 개의 폴리곤 = 동일한 VS 수백만을 포함하는 VS 1 그룹 오브젝트가 빠름). 따라서 ** 개별 픽셀 (비트 맵 데이터)이 아닌 ** 컨테이너를 매끄럽게 처리하십시오. 시각 효과 결과는 같습니다. –

+0

** 문제의 재 작성 방법 **의 예제 코드를 보여주십시오 ** Bitmap.smoothing을 사용할 수없는 기술적 이유나 한계가 있습니까? 그렇지 않으면 부드럽게하기 위해 자체 선형 필터를 작성해야합니다. 일부 GPU 기반 [** Pixel Bender smoother **] (http://www.smart-page.net/blog/2010/02/21/smartaa-reconstruct-anti-aliasing-with-pixel-bender/)를 사용해보십시오.) 코드를 AS3 프로젝트에 추가하십시오. 온라인 자습서에서 AS3 코드 내에서'= new shader()'객체로 사용할 PBJ를 가져 오는 방법을 확인하십시오. 어쨌든 한 가지 예일뿐입니다. –

관련 문제