Silverlight e GPU Acceleration

Silverlight e GPU Acceleration

Você sabe quando usar?

A partir da versão Silverlight 3 é possível habilitar a aceleração de hardware. A ativação permite otimizar os recursos de hardware. Se você tiver um processador poderoso, multi-core, eu recomendo limitar o número de núcleos disponíveis para o seu navegador a 1, de modo que você veja diferença do recurso de hardware.   

Para nosso exemplo, irei utilizar o controle MediaElement e atribuir as propriedades como mostra a Tabela 1.0.    

 XAML

<MediaElement x:Name="_mediavideo" Width="400" Height="300"></MediaElement>

 C#

  public MainPage()

        {

            InitializeComponent();

            _mediavideo.Source = new Uri("http://www.dowhile.com.br /Behavior.wmv", UriKind.RelativeOrAbsolute);

        }

Tabela 1.0 –Configurando Mediaelement 

A aceleração GPU está desativada por padrão em Silverlight.  Para habilitá-lo, você tem que em dois níveis: tanto para o plugin, e para cada elemento que você deseja acelerar.
Para habilitar a aceleração GPU para o plugin, você tem que adicionar um parâmetro para o tag <object> no seu arquivo HTML ou ASPX que hospeda o aplicativo Silverlight, como mostra o código da Tabela 2.0.

<param name = "enableGPUAcceleration" value = "true"  />

Tabela 2.0 – Ativando aceleração GPU

Para verificar onde os recursos da  otimização está sendo aplicada você poderá usar outro param como traz a Tabela 3.0.

<param name="enableCacheVisualization" value="true"/>

Tabela 3.0 – Visualizar onde a otimização está sendo aplicada

Ao executar a aplicação você irá ver que sua aplicação está com background vermelho como mostra a Figura 1.0.


Figura 1.0 – Aplicação sem otimização de hardware

A cor vermelha na aplicação indica que a otimização para o recursos de hardware não está aplicado, embora esteja ativada. Isto acontece porque o elemento medialement não está definido com o modo de cache.

Então, o que pode fazer com a GPU de bitmaps em cache?  No Silverlight , a GPU pode:

•  Escala de bitmap - RenderTransform
•  Gire o bitmap - RenderTransform
•  Mude a opacidade do bitmap - Opacity
•  Clip do bitmap



Então, se você está escalando, girando, desaparecendo,
você pode instruir Silverlight para fazer a animação na GPU. 
Isso pode não parecer muito, mas pode realmente ajudar em muitos casos.


Para ativar a GPU no mediaelement, use a propriedade CacheMode="BitmapCache", como mostra a Tabela 4.0.

<MediaElement x:Name="_mediavideo" Width="400" Height="300"  CacheMode="BitmapCache"

        </MediaElement>

Tabela 4.0 – Habilitando o CacheMode

Execute a aplicação novamente, e você poderá observar que a cor verlmelha não está mais presente no vídeo, como mostra a Figura 2.0.


Figura 2.0 – Aplicação com GPU


Conclusão

Aceleração GPU pode ajudar a tirar mais proveito de suas animações, mas você precisa saber os prós e contras para realmente usá-lo corretamente.  A regra de ouro é apenas aplicável Bitmap Caching se você tem um conteúdo que precisa mover ou girar ao redor da cena, ou alterar sua opacidade durante uma animação. 

Esperemos que este artigo ajude a compreender como a aceleração Silverlight  GPU trabalha e a razão de utiliza - lá. 

Não se esqueça: Deixe seus comentários e perguntas abaixo, para que possamos melhorar sempre.


blog comments powered by Disqus

NewsLetter

Por favor preencher os campos.
Quer receber artigos?


Receber em HTML?