2009-10-20 8 views
5

Nachdem ich die auf WPF-Architektur gelesen habe, bin ich ein wenig verwirrt mit den Vorteilen, die WPF mir bieten wird. (wikipedia ist keine gute Forschungsreferenz, aber ich fand es nützlich). Ich habe einige FragenWPF-Architektur und Direct3D-Grafikbeschleunigung

1) WPF verwendet D3D-Oberflächen zum Rendern. Der Szenengraph wird jedoch von der integrierten Medienebene, die auf der CPU läuft, in die d3d-Oberfläche gerendert. Ist das wahr ?

2) Ich habe gerade herausgefunden, dass Bitmaps keine nativen Ressourcen verwenden. Bedeutet das, dass, wenn ich viele Bilder verwende, die MIL beim Rendern kopieren wird, anstatt die Bitmaps auf der Grafikkarte als Textur zu speichern?

3) Der Artikel erwähnt, dass WPF den Maler-Algorithmus verwendet, der von hinten nach vorne ist. Das ist schmerzhaft langsam. Gibt es einen vernünftigen Grund, warum WPF keine Z-Pufferung und Rendering von vorne nach hinten verwendet? Ich rate, weil es der einfachste Weg ist, mit Transparenz umzugehen, aber es scheint schwach zu sein.

Der Grund, warum ich frage, ist, dass ich denke, es ist nicht klug für mich, Hunderte von Tasten auf einem Bildschirm zu setzen, obwohl meine Kollegen sagen, dass seine DirectX beschleunigt. Ich glaube nicht, dass die ganze DirectX ein wenig über WPF beschleunigt hat. Ich habe früher an Videospielen gearbeitet und meine Erinnerung an das Schreiben von d3d und OpenGL Code sagt mir, dass ich vorsichtig sein muss.

Antwort

3

Für Fragen # 1 und # 3 möchten Sie vielleicht this section des SDK, das the Visual class diskutiert und wie Rendering-Anweisungen zwischen der übergeordneten Ebene und der Media Integration Layer (MIL) ausgetauscht werden. Es wird auch erläutert, warum der Maler-Algorithmus verwendet wird.

Für # 2, nein, das ist definitiv nicht der Fall. Die Bitmap-Daten werden auf die Hardware verschoben und dort zwischengespeichert.

+0

Danke. Die Architektur-Verbindung war sehr nützlich bei der Beantwortung einiger meiner Fragen :) –

2

Ich habe getestet, schrieb ich zwei Programme, die 1.000 Tasten auf dem Bildschirm zeigen, eine in WinForms und eine in WPF, beide gut geklappt.

Ich schob dann das bis zu 10.000 Tasten, zu diesem Zeitpunkt die WPF-App dauerte ein paar Sekunden, um zu starten, aber gut, lief die WinForms App nicht gestartet.

Win32 selbst (und WinForms) ist nicht für Anwendungen mit Hunderten von Steuerelementen gebaut (glaube mir, ich schrieb eine solche App), irgendwann funktioniert es einfach nicht mehr, WPF auf der anderen Seite funktioniert, auch wenn es langsamer wird ein bisschen runter.

Wenn Sie also viele Steuerelemente auf dem Bildschirm platzieren müssen, ist WPF die beste Wahl (es sei denn, Sie möchten Ihr eigenes UI-Framework rollen - und Sie denken, Sie können besser als das gesamte MS perf-Team).

Auch hat WPF viele Vorteile außer der Grafikbeschleunigung: reichere Grafiken, Zeichnungsmodell, das einfacher zu bearbeiten ist, Animationen, 3D und mein persönlicher Favorit - erstaunliche Datenbindung.

Dadurch können Sie schneller UI schneller entwickeln - und ich denke, das wird einen viel größeren Unterschied als die Malalgorithmus verwendet werden.

BTW, wenn Sie Hunderte von Schaltflächen auf dem Bildschirm setzen müssen, ist dies wahrscheinlich eine schlechte Benutzererfahrung sein, und Sie möchten Ihr UI-Design zu überdenken,

+0

Leider zeigt meine Anwendung eine Ansicht einer Telefonzentrale, die viele Tasten hat, damit sich der Bediener wohl fühlt. Die Benutzeroberfläche ist so überladen, aber sie mögen es so.Die neue Version, an der ich arbeite, wird die Möglichkeit haben, Tasten wegzubewegen, die nicht dazu geeignet sind, das Durcheinander zu reduzieren. Ich bezweifle, dass ich mein eigenes Framework ausrollen werde, WPF wird es gut machen :) –

Verwandte Themen