<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.codecomplete.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>XAML Blog : DirectX</title><link>http://www.codecomplete.de/blogs/xamlblog/archive/tags/DirectX/default.aspx</link><description>Tags: DirectX</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>WPF und DirectX</title><link>http://www.codecomplete.de/blogs/xamlblog/archive/2007/04/19/wpf-und-directx.aspx</link><pubDate>Thu, 19 Apr 2007 00:28:00 GMT</pubDate><guid isPermaLink="false">81aaacb2-e9d6-4141-b1a3-d6a38e006815:108</guid><dc:creator>jpkleinau</dc:creator><slash:comments>2</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.codecomplete.de/blogs/xamlblog/commentapi.aspx?PostID=108</wfw:comment><comments>http://www.codecomplete.de/blogs/xamlblog/archive/2007/04/19/wpf-und-directx.aspx#comments</comments><description>&lt;p&gt;Vor Kurzem kam in einem Meeting über das neue optisch aufgebesserte Programm eines deutschen Konzerns der Wunsch des Marketings auf, mit WPF so tolle 3D Effekte zu produzieren, wie man es aus den Spielen kennt, denn „&lt;em&gt;schließlich könne die Windows Presentation Foundation auch 3D darstellen und das Schachspiel sei doch mit den neuen Vista Features also WPF gemacht worden“.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Leider muss ich da enttäuschen. Chess Titans wurde von Oberon gefertigt und wie Sean O’Connor, Program Manager für Windows Vista in box games, im Windows Connected Chat gestehen musste:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Q: Are any of the games using Avalon? (sorry if already asked)&lt;br /&gt;A: No.&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Chess Titans sind wie die meisten Vista In-Box Games mit Hilfe von DirectX geschrieben worden und von daher schnell, flüssig und im Bereich 3D leistungsstark.&lt;/p&gt;
&lt;h2&gt;WPF ist keine Game Engine&lt;/h2&gt;
&lt;p&gt;WPF steht für Einfachheit in der Entwicklung. Bei Windows Presentation Foundation geht es nicht um das Schreiben von schnellen, komplexen Spielen oder bahnbrechenden 3D Effekten, sondern um die Vereinfachung bei der Erzeugung von ansprechenden Oberflächen. WPF soll neue Märkte als Silverlight erschließen und neue Wege zwischen Design und Programmentwicklung in der Kooperation und Zusammenarbeit aufzeigen (Was übrigens sehr gut klappt, wir haben bereits das dritte WPF Projekt innerhalb von einem halben Jahr mit Design Firmen in enger Partnerschaft).&lt;/p&gt;
&lt;p&gt;Es gab schon einen Grund dafür die beiden Technologien mit Presentation und Graphics zu benennen. Im Original hieß Direct3D 10 für Vista „Windows Graphics Foundation“.&lt;/p&gt;
&lt;p&gt;Wer wirklich Spiel programmieren will, der sollte sich mit Managed DirectX auseinandersetzen. Dies ist zwar im Vergleich zu C++ DirectX etwa 2-15% langsamer, aber stabiler und benötigt weitaus kürzere Entwicklungszeiten. Allerdings ist auch diese Variante der DirectX Programmierung mit einer weitaus größeren Einarbeitungszeit, eine recht hohe Hürde, die in der Version 10 nicht niedriger wurde, versehen als es WPF ist. &lt;/p&gt;
&lt;h2&gt;WPF vs DirectX&lt;/h2&gt;
&lt;p&gt;Ein Vergleich zwischen den beiden Präsentationsformen ist nur von kurzer Dauer. Augenscheinlich fängt der gravierende Unterschied mit der deklarativen Sprache XAML für WPF auf. Hier erkennt man schon schnell die unterschiedliche Zielrichtung der beiden Systeme.&lt;br /&gt;Aber auch in den Features lassen sich schnell die Unterschiede ausmachen. Im einfachen 2D Bereich kann WPF noch einigermaßen mithalten, auch wenn die Performanz im Vergleich zu DirectX eher bemitleidenswert ist.&lt;/p&gt;
&lt;p&gt;Doch in 3D erkennen wir schnell, was DirectX (10) zu leisten in Stande ist (teilweise seit der Version 8.1) und WPF in der nächsten Version vermutlich nur bedingt leisten werden kann:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anisotropic Lighting&lt;br /&gt;&lt;/strong&gt;Ermöglicht Lichteffekte von Seide, gebürsteten Metall.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Membrane Shaders&lt;br /&gt;&lt;/strong&gt;Halbdurchsichtige Texturen für Haut, Ballons und andere Membranen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubelka-Munk Shaders&lt;br /&gt;&lt;/strong&gt;Licht, das durch die Oberfläche dringt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procedural Geometry &lt;br /&gt;&lt;/strong&gt;Die Verbindung zwischen Mesh (Polygon) Geometrie und Drehkörpern (Spheres)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bump Maps&lt;/strong&gt;&lt;br /&gt;Mit dieser Technik lassen sich realistische Oberflächen (Gras, Fell, raue Strukturen wie Fels oder Sand) darstellen, ohne dass das 3D Modell um weitere Polygone erweitert werden muss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fully Programmable Pipelines (Direct3D 10)&lt;br /&gt;&lt;/strong&gt;Für Hardware nahe Programmierung ganz nah an der Graphikkarte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paging of Graphics Memory&lt;br /&gt;&lt;/strong&gt;Perfektionierter Austausch von Daten zwischen Grafikkarte und Speicher.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Predicated Rendering (Direct3D 10)&lt;br /&gt;&lt;/strong&gt;Nur das wird gerendert, was auch wirklich sichtbar ist.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instancing (Direct3D 10)&lt;/strong&gt;&lt;br /&gt;Hiermit lassen sich Objekte vermehren (Darstellen von Armeen, Wäldern)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Von den unterstützenden Bibliotheken abgesehen (beispielsweise D3DX mit der Berechnung von Partikeln) ist also DirectX in der direkten Ansprache durch C++ oder Managed DirectX weitaus geeigneter, um ein 3D Schachprogramm zu programmieren. &lt;/p&gt;
&lt;h2&gt;Office Anwendungen mit Pumpgun&lt;/h2&gt;
&lt;p&gt;Es macht also wenig Sinn, eine Office Anwendung mit WPF programmieren zu wollen, die 3D Features eines Ego Shooters aufweist. Hier ist eine technische Hürde gesetzt, die voll und ganz so beabsichtigt wurde, da das Ziel der WPF nicht maßgeblich in der tollen Grafik, sondern vor Allen in der leichten Umsetzbarkeit liegt.&lt;/p&gt;
&lt;p&gt;Zwar wurde kein Ego Shooter von der Marketingabteilung gewünscht, sondern eine Kartenvisualisierung (vermutlich durch Kachelmann oder Google Earth inspiriert), aber dies mit der WPF zu erreichen stellt nicht nur das Entwicklungsteam, sondern auch die Zielplattform, den Kundenrechner, vor eine Herausforderung, die kaum wirtschaftlich mit der WPF zu bewältigen ist. Ob sich es rechnet, hier DirectX einzusetzen mag auch zweifelhaft sein – doch das wird das nächste Meeting klären.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.codecomplete.de/aggbug.aspx?PostID=108" width="1" height="1"&gt;</description><category domain="http://www.codecomplete.de/blogs/xamlblog/archive/tags/DirectX/default.aspx">DirectX</category><category domain="http://www.codecomplete.de/blogs/xamlblog/archive/tags/WPF/default.aspx">WPF</category></item></channel></rss>