WPF Pixelshader auf Bild anwenden

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

    WPF Pixelshader auf Bild anwenden

    Hi,

    ich habe einen Pixelshader, den ich auf WPF-Controls als Effekt (mit entsprechender Wrapper-Klasse) anwenden kann.
    Nun möchte ich diesen Effekt nicht auf ein Control, sondern auf ein Bitmap oder sonstwas anwenden.

    Ich habe schon Lösungen gefunden, die im Code-Behind temporär ein Image-Control erzeugen, dieses mit dem Effekt belegen und es dann über RenderTargetBitmap in ein Bild rendern.
    Gegen diese Methode sprechen aus meiner Sicht 2 Dinge:
    1. Ich will keine Controls verwenden, das erscheint mir zu unsauber.
    2. RendertargetBitmap benutzt nicht die GPU, sondern die CPU. Trotz Pixelshader (hab ich in den MSDN-Boards und bei Stackoverflow gelesen).

    Gibt es eine Möglichkeit, mein Vorhaben ohne Controls zu realisieren? Wenn ja: Welche?
    Es wäre m. M. n. auch sinnvoll, die GPU zu nutzen, wenn der Effekt schon in HLSL als Pixelshader implementiert wurde.

    Sicher wäre es eine Lösung, direkt über DX zu arbeiten. Dann müsste in in meiner Anwendung allerdings sicherlich das DX-Redist. mitliefern. Das kommt auch nicht in Frage.
    Da WPF DX benutzt, hab ich mir gedacht, dass es sicherlich auch ohne große Umwege möglich ist.

    Hat irgendwer von Euch eine Idee? Ich bin leider ziemlich neu in WPF und würde mich freuen, wenn ihr mir sagen würdet, ob und wie es geht.

    bis dann,
    nikeee
    Von meinem iPhone gesendet
    nokola.com/blog/post/2010/01/1…utations-And-More%29.aspx
    Scheint zwar Silverlight zu sein, aber ist denke ich trotzdem WPF, obs nun wirklich auf der GPU ausgeführt wird, wird hier finde ich nicht ganz deutlich, aber probiers einfach...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Gut, dort wird statt 'nem RenderTargetBitmap eine WritableBitmap verwendet.
    Ich glaube nicht, dass das einen großen Unterschied macht.

    Die Methode, die du gepostet hast, verwendet leider auch ein temporäres Control (das Image-Control: msdn.microsoft.com/de-de/libra…ndows.controls.image.aspx ). Temporäre Controls möchte ich meiden, da ich dort immer das "LolIchInstanziiereSchnellNenWebbrowserControlUndLadeDamitDieSeiteRunter"-Gefühl habe.

    Gibt es wirklich keine andere Lösung?
    Von meinem iPhone gesendet