2012-09-17 3 views
2

많은 이미지 (GIS 스타일, 바둑판 식 이미지 표시, 확대/축소/팬/기타 등)를 사용하는 실버 라이트 응용 프로그램을 최적화하고 있습니다. 비트 맵 캐싱 (bitmapcaching) 기능으로 GPU에 많은 것들을 제공해야합니다.Silverlight + Bitmapcache : 작동하지 않습니다.

그러나 나는 제대로 작동하지 않는 것 같습니다.

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
     <param name="EnableCacheVisualization" value="true" /> 
     <param name="EnableGPUAcceleration" value="true" /> 
     <param name="EnableFramerateCounter" value="true" /> 
     <param name="source" value="ClientBin/BitmapCaching.xap"/> 
     <param name="onError" value="onSilverlightError" /> 
     <param name="background" value="white" /> 
     <param name="minRuntimeVersion" value="5.0.61118.0" /> 
     <param name="autoUpgrade" value="true" /> 
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration:none"> 
      <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> 
     </a> 
    </object> 

을 그리고 내 XAML뿐만 아니라 캐싱을 활성화해야합니다 : 내 호스트 페이지가 올바른 PARAMS을 포함 (? 내 생각)

<UserControl x:Class="BitmapCaching.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

    <Grid x:Name="LayoutRoot" Background="White" CacheMode="BitmapCache"> 
     <Rectangle x:Name="img" Width="200" Height="200" Stroke="Black"> 
      <Rectangle.Fill> 
       <ImageBrush ImageSource="/BitmapCaching;component/download.jpg" /> 
      </Rectangle.Fill> 
      <Rectangle.RenderTransform> 
       <RotateTransform /> 
      </Rectangle.RenderTransform> 
     </Rectangle> 
     <Button Content="Scale" Height="40" Width="100" Click="Button_Click" /> 
    </Grid> 
</UserControl> 

(예, 나는 그것이에 CacheMode는 넣어 똑똑하지 알고 루트 요소)

그러나 응용 프로그램을 실행하면 완전한 응용 프로그램에 빨간색 색조의 오버레이가 나타납니다. 캐시 된 것이 없음을 나타냅니다.

GFX 카드의 최신 드라이버가 필요하다고 읽었지만 괜찮습니다. 이 기기에는 최신 드라이버가 포함 된 ATI Radeon HD5450 비디오 카드가 있습니다. 충분하지 않다고 나는 상상할 수 없는가?

내가 곤혹 스럽다. 누군가가 이것을 해결하는 방법을 알고 있다면 제발, 제 정신이 나지 않게하십시오!

답변

2

MS가이 속성에 대한 설명서를 망쳤다 고 생각합니다.

문서에 따르면 색조가 가속되지 않으면 색조가 나타나고 가속되는 경우 색조가 잡히지 않습니다. 사실이지만 다른 속성 인 enableRedrawRegions!

이 속성은 EnableCacheVisualization과 유사하지만 모든 다시 그리기의 색을 변경합니다. 따라서 enableRedrawRegions를 켜면 다시 그리는 모습을 볼 수 있습니다. 발생하는 재 드로잉을 시각화하는 것이 훨씬 쉽습니다.

GPU Acceleration을 켜고 끄면 GPU가 켜져 있으면 CPU로 애니메이션이 다시 그려지지 않는다는 것을 알 수 있습니다 (대신 GPU에 의해 수행 됨). 이 기능을 사용하면 많은 재 작업을 볼 수 있습니다.

그런 다음 enableRedrawRegions를 해제하고 EnableCacheVisualization을 사용 설정합니다. GPU 가속 기능을 끄면 모든 것이 정상적으로 보입니다. 전원을 켜면 모든 것이 색이 보입니다. DOES라는 의미는 가속화 된 것을 의미하며 문서의 상태와 반대입니다.

이것을 테스트하는 좋은 프로젝트는이 블로그의 내용입니다 : http://andybeaulieu.com/Home/tabid/67/EntryID/193/Default.aspx. 그것은 CPU 가속화로부터 이익을 얻는 회전 전화기를 보여 주며 속성을 토글함으로써 GPU가 무엇을하는지 볼 수 있습니다.

그레그

+0

이렇게 보입니다. 고마워, 많이 지워! –

관련 문제