본문 바로가기

Silverlight

조사내용 - GPU 가속 향상 사용법과 한계


쇼티예요.

  어제 (4월 1일) 세미나 가셨던 분들, 하셨던 분들 모두 수고 많이 하셨습니다.

  윈도우 7도 그렇고 실버라이트 3도 그렇고.. 신기술은 신기술이지만 '맹신'이 아닌, 언제나 
  '사용자' 들이 이 어플리케이션을 접했을 때에 어떤 반응을 보일까.. 를 생각하는게 먼저일 듯
  싶네요.. ^^

  이번 실버라이트 3에서 MS측에서 내세우는 기능중에 하나가 GPU 가속을 지원한다는 이야기가
  있었지요. 아직 나온게 아니라 그런가요.. 각종 세미나에선 그냥 '이게 된다' '지원 한다' 하고 
  넘어가더군요..

  사용법은 간단합니다. 

  Testpage.Html이라면.. 이 부분을 <object> 밑에 파라미터로 주시구요.
  <param name="EnableGPUAcceleration" value="true" />
 
  만약 Testpage.aspx라면.. 이 부분을 파라미터로 적용시킵니다.
  <asp:Silverlight ID="Silverlight1" EnableGPUAcceleration="true" runat="server"
    Source="~/ClientBin/MyApp.xap" ...... />

  이렇게 하고, 가속이 필요한 엘리먼트에 다음과 같이 BitmapCache 모드로 하시면 끝입니다.

  <Image CacheMode="BitmapCache" Source="MyImage.png"></Image> 

  
  이게 무슨 역할을 하느냐. 하면..

 


 
  렌더링 방식을 바꾼다는 이야기입니다. Silverlight 2에서는 각 프레임마다 다시 그 그림을
  그리는 방식을 취하고 있었지요. 이것을, 캐시를 사용하여 그래픽 처리에서 속도 향상을 가져
  온다는 것입니다. 이 내용은 여기에서 볼 수 있어요.

  이 분이 설명해놓은 BitmapCaching에서는 다음과 같은 특징이 있다 합니다.


  - 비트맵캐시는 CacheMode에서만 서포트함
  - 이 효과는 자식 엘리먼트에도 적용됨 (Grid에 걸어놓으면 Grid 자식까지 적용된다는 의미)
  - Blending, Transforming (translating, stretching, rotating) 등에 적용하는 시나리오 권장
  - 어쨌든 남용은 퍼포먼스 저하
  - <param name="EnableCacheVisualization" value="true" /> 를 <object>에 추가하여 측정 가능
  - 맥에선 풀스크린 모드가 아니면 일어나지 않음. 사파리에서 다소의 제약이 있음


  ..이쯤되면 맥이 탁 풀리지요. 이게 무슨 대단한 기능이란 말인가..
 
  그리고 실버라이트 포럼에서 MS 관계자가 단 리플도 보면

  - 엘리먼트가 옮겨질때, 특히 Scale쪽
  - 반투명 엘리먼트가 있을 때
  - 사각형 클립(마스크 영역..같은거)이 존재할 때

  이 세가지 경우가 아니면, 그다지 성능향상을 기대할 수 없을 뿐더러, 오히려 성능이 떨어질 
  수도 있다는 것을 경고하고 있습니다.

  
  그렇기에 부디, GPU 가속을 사용하시려면 참고하시기 바랍니다. 

  GPU 가속이 비디오카드에 의해 영향을 미친다는 이야기는, 비디오카드가 좋지 않은 고객의 컴퓨터
  에서는, 오히려 성능이 나빠질 수도 있다는 이야기가 되는거잖아요..

   도움이 되셨길 바랍니다. ^^

[출처] 실버라이트 네이버 카페