GDI Ersatz?

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

GDI Ersatz?

Beitrag von Helmut »

Hallo,
ich frage mich, wie Windows eigentlich sein UI rendert. Überall sieht man Transparenzeffekte, zB in der Taskleiste von Win 7, in den Ribbons von Office oder ein stinknormaler OK Button, der ab Vista ganz langsam im Sinusrythmus vor sich hinleuchtet. Sowas kann man mit GDI eigentlich nicht hinkriegen. Zumindest wüsste ich nicht wie, BitBlt kopiert zwar den Alphachannel mit, verarbeitet ihn aber nicht mit dem, was davor gerendert wurde. GDI+ kann das zwar alles, ist aber so langsam, dass es für flüssige Animationen unbrauchbar ist. DX kanns auch nicht sein, denn die Effekte bleiben auch, wenn die Harwarebeschleunigung ausgeschaltet ist. DirectWrite/2D fallen auch weg, das ist zu neu. OpenGL wäre theoretisch möglich, allerdings wage ich es doch sehr zu bezweifeln, dass MS das freiwillig benutzt :)

Hat da jemand zufällig etwas Ahnung? Das würde mich schon irgendwie interessieren :)

Ciao
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: GDI Ersatz?

Beitrag von DomiOh »

Vieles davon wird über GDI+ realisiert.
Wenn du dich mit .NET-Programmierung beschäftigst, lässt sich das gut herausfinden.

Die transparenten Fensterrahmen die es seit Vista (Aero-Theme) gibt, werden per DirectX 9 realisiert, über den Desktop Window Manager.
(Und diese Effekte hast du nicht, wenn du keine DX9-fähige Hardware hast)
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: GDI Ersatz?

Beitrag von Helmut »

Gut, danke, ich schau mir mal GDI+ nochmal genauer an.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: GDI Ersatz?

Beitrag von Krishty »

DomiOh hat geschrieben:Vieles davon wird über GDI+ realisiert.
Ähm, nicht eher über die WPF?
Helmut hat geschrieben:Überall sieht man Transparenzeffekte, zB in der Taskleiste von Win 7, in den Ribbons von Office oder ein stinknormaler OK Button, der ab Vista ganz langsam im Sinusrythmus vor sich hinleuchtet. Sowas kann man mit GDI eigentlich nicht hinkriegen. Zumindest wüsste ich nicht wie, BitBlt kopiert zwar den Alphachannel mit, verarbeitet ihn aber nicht mit dem, was davor gerendert wurde. GDI+ kann das zwar alles, ist aber so langsam, dass es für flüssige Animationen unbrauchbar ist.
Alle Grafikelemente (auch Fenster, etc.) werden via Direct3D gerendert. Dies hat zur Folge, dass einige Aufgaben hardwarebeschleunigt von der GPU der Grafikkarte übernommen werden anstatt von der CPU. Zudem können 3D-Grafiken in 2D-Anwendungen angezeigt werden. Auch Vektorgrafiken werden unterstützt. Bitmap-Effekte werden angeboten, diese werden allerdings noch via Software berechnet, dies wird mit dem Service Pack 1 für das .NET Framework 3.5 geändert[1]. Einfache Effekte (Schatten, etc.) sind schon vordefiniert.
Ich habe vor ein paar Jahren ein kurzes Video über die mit Vista kommenden Features gesehen, und da wurden all die Besonderheiten wie glühende Buttons schnell in einen Texteditor geschrieben und ausgeführt. Damals hat es mich nicht weiter gekümmert, aber aus heutiger Sicht würde das perfekt zu WPF und XAML passen.

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: GDI Ersatz?

Beitrag von DomiOh »

Wenn du dir mit einem Reflector mal die Sources der WinForms in .NET 2 - 3.5 anschaust, siehst du, dass alle Controls dort über die GDI+ gezeichnet werden ;)
Natürlich ist die WPF besser geeignet, da man dort auch Hardwarebeschleunigung hat.
Aber viele WinForms-Controls haben solche Effekte auch, und die sind GDI+
Antworten