Archiv verlassen und diese Seite im Standarddesign anzeigen : Direct2D - c't Artikel 21/2010
Avalox
2010-09-27, 20:22:41
Einer der interessantesten Artikel in der aktuellen c't handelt über Direct2D.
(2D mit Hilfsmotor, ct 21/2010, S.180 - Manfred Bertuch)
So richtig bewusst ist mir die gesamte Geschichte erst beim lesen des Artikels geworden.
Zum einen scheint es noch nicht viel Software zu geben, welche überhaupt Direct2D benutzt. IE9 und Firefox 4 Beta sind dort genannt. Paint.NET nutzt D2D wohl ausschliesslich zum Text rendern. Mehr Programme werden erstmal nicht genannt.
Besonders interessant ist die Geschichte von D2D, welche gerade in Hinblick auf schwachbrüstige x86 Netbooks und Tablets sehr interessant ist. Da diese x86 Windows Geräte gegen die 2D Darstellungsgeschwindigkeit von aktuellen nicht Windows Smartphones und Tablets keine Sonne sehen.
In Windows XP wurde 2D noch mit GDI+ beschleunigt. Dieses basierte auf 2D Funktionen der GPU. Mit Vista Aero wurde permanent dann die GPU im 3D Modus gehalten und GDI+ dann per Software abgebildet. Der Windowmanager bediente sich dabei der 3D Beschleunigung zum zeichnen der Fenster und der GUI Elemente.
Direct2D setzt deshalb nun auf Direct3D auf. Soweit, dass selbst Linien als schmale Dreiecke gezeichnet werden.
Man hat das Desaster unter XP gesehen als ATI die 2D-Einheit dann weggelassen hat (im Glauben an Vista und D2D :ulol:) und alles per Treiber auf den 3D-Einheiten simuliert wurde. Wobei das nicht nur GDI betrift/betraf. Eine 1950pro dreht auf dem XP-Desktop im quasi Ilde gelangweilt Kreise um eine mit vollem Takt Blut und Wasser schwitzende 3870.
Deswegen bin ich nicht 100% der Auffassung, daß unter XP 2D bzw. die OBerfläche nur über GDI beschleunigt wird. Jeder der es noch booten kann, kann mal versuchen den Grakatreiber zu deinstallieren und beim nächsten Start StandardVGA zu aktivieren. Von Matrox Mystique und TNT2 bis 5870 und GTX480. Der Unterschied der grafischen Leistungsfähigkeit des XP-Desktops ist dann mindestens frappierend ;)
In Windows XP wurde 2D noch mit GDI+ beschleunigt. Dieses basierte auf 2D Funktionen der GPU.
Wäre mir neu, dass GDI+ die GPU verwendet. IMO ist der Unterschied von GDI zu GDI+ lediglich, dass GDI+ mehr Funktionen kann wie z.B. Vektorgrafik, aber eben auch alles in Software.
Zum zeichnen verwendet GDI/GDI+ dann immer die Device Contexte, die sozusagen die Schnittstelle zwischen GDI und Treiber sind. Und IMO ist auch das genau der Grund warum in Vista GDI komplett in SW emuliert wird, weil das Konzept der Device Contexte irgendwie auf D3D umgemappt werden muss und das, was der Grafiktreiber normalerweise gemacht hat noch mal zuvor so aufbereitet werden muss, dass es über die D3D Schnittstelle geht. (vermute ich zumindest)
Direct2D hat man IMO hauptsächlich deswegen eingeführt, um die Masse an bestehenden Altanwendungen bzw. die vorhandene Codebasis, die auf GDI/GDI+ aufsetzt, ohne großen Aufwand per GPU zu beschleunigen und dessen Funktionen besser auszunutzen.
Wilhelm
2010-09-28, 12:55:04
Sehr guter Artikel. Auch der DNSSEC Artikel ist sehr gut :)
Wäre mir neu, dass GDI+ die GPU verwendet. IMO ist der Unterschied von GDI zu GDI+ lediglich, dass GDI+ mehr Funktionen kann wie z.B. Vektorgrafik, aber eben auch alles in Software.
GDI+ ist eine C++-Library die GDI als Backend verwendet. Bestimmte Teile von GDI werden unter XP und Windows 7 (mit WDDM 1.1) sehr wohl in Hardware beschleunigt (bitblits, etc.)
Vista macht das Rendering der Fensterinhalte tatsächlich größtenteils auf der CPU.
Direct2D hat man IMO hauptsächlich deswegen eingeführt, um die Masse an bestehenden Altanwendungen bzw. die vorhandene Codebasis, die auf GDI/GDI+ aufsetzt, ohne großen Aufwand per GPU zu beschleunigen und dessen Funktionen besser auszunutzen.
Direct2D beschleunigt gar nichts wenn man es nicht direkt anspricht.
Direct2D beschleunigt gar nichts wenn man es nicht direkt anspricht.
Stimmt, aber es ist dafür designed mit der Device Context Architektur von GDI zu arbeiten, so dass man diese Funktionalität problemlos in die bestehende Codebasis integrieren kann ohne einen kompletten Architekturwechsel hin zu Direct3D oder was anderes machen zu müssen.
Ich weiß nicht wie du das meinst, aber man kann natürlich mit Direct2D in ein beliebiges Fenster rendern. Das kann man auch mit Direct3D und OpenGL.
_DrillSarge]I[
2010-09-29, 04:42:00
Mit Vista Aero wurde permanent dann die GPU im 3D Modus gehalten
???
ich glaube nicht. oder wie ist das gemeint?
Er meint wohl nicht den Power-Zustand, sondern den State. Wobei ich nicht glaube, dass da ein Unterschied existiert.
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.