DirectX - userpages.uni-koblenz.decg/ss08/seminarER/DirectX_exposition_2.pdf · DirectX 10.1 ist...

15
Fachbereich 4: Informatik Seminar Echtzeit-Rendering SS 2008 DirectX vorgelegt von Matthias Scharek Betreuer: Prof. Dr. Stefan M¨ uller (Institut f ¨ ur Computervisualistik, AG Computergrafik) Koblenz, 11. Juni 2008

Transcript of DirectX - userpages.uni-koblenz.decg/ss08/seminarER/DirectX_exposition_2.pdf · DirectX 10.1 ist...

Fachbereich 4: Informatik

Seminar

Echtzeit-Rendering

SS 2008

DirectX

vorgelegt von

Matthias Scharek

Betreuer: Prof. Dr. Stefan Muller(Institut fur Computervisualistik, AG Computergrafik)

Koblenz, 11. Juni 2008

Inhaltsverzeichnis

1 Einleitung 2

2 Die Komponenten von DirectX 22.1 DirectX Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 Direct Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3 Direct Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.4 Direct Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Versionsunterschiede zwischen DirectX 9 und DirectX 10 43.1 Einzelne Unterschiede im Uberblick . . . . . . . . . . . . . . . . 43.2 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.3 Texturfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.4 Constant Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . 73.5 Predicated Draw . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.6 Shader Modell 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . 73.7 DirectX 10 Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . 93.8 Instancing 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.9 Displacement Mapping 10 . . . . . . . . . . . . . . . . . . . . . 9

4 Ausblick 13

5 Fazit 13

1

1 Einleitung

DirectX ist eine Sammlung von Software-Schnittstellen (kurz: API, englisch: Ap-plication Programming Interface), die auf COM basieren. Das Component ObjectModel (kurz: COM) wurde von der Firma Microsoft entwickelt, um unter demhauseigenen Betriebssystem Windows Interprozesskommunikation und dynami-sche Objekterzeugung zu ermoglichen. Ziel von COM ist es, Softwaresysteme inwiederverwendbare Komponenten zu zerlegen. Dabei werden diese Komponen-ten binar als Dynamic Link Library (kurz: DLL) oder als ausfuhrbare Programme(EXE) gespeichert. Um eine Komponente zu erzeugen, muss davor definiert wer-den, welche Funktionalitaten diese Komponente zur Verfugung stellen soll, dieswird mit Hilfe von Schnittstellen erreicht [Rod99, Wik08].

Zu den wichtigsten Eigenschaften von COM gehort sowohl die Spach-/ alsauch die Plattformunabhagigkeit. Aufgrund der Unterstutzung des Binarstandardsist COM wie schon erwahnt sprachunabhangig. Das bedeutet, dass der Program-mierer COM-Objekte mit objektorientierten Sprachen kompilieren kann. Dabeientsteht eine Binardatei, die auf der einen Seite die implementierten Funktionenund auf der anderen Seite ein Interface zur Verfugung stellt. Durch dieses Interfacekonnen nun die implementierten Funktionen von anderen Programmen verwendetwerden. Die Versionsunabhangigkeit wiederum ermoglicht, dass die Verwaltungvon neuen Softwarefeatures in bestehende Anwendungen einfach intergriert wer-den kann [Zwi05].

Zusammen mit OpenGL gehort DirectX zu den wohl am haufigst verwendeten3D-APIs. Das Ziel ist es, verschiedene Funktionen zur Verfugung zu stellen, mitderen Hilfe sich hardwarenahe Anwendungen erstellen lassen. DirectX besteht auszahlreichen Komponenten, wie DirectX Graphics, Direct Input oder auch DirectSound, um nur die wichtigsten zu nennen. In den folgenden Abschnitten werdendiese und andere Komponenten etwas genauer erlautert.

2 Die Komponenten von DirectX

Wie schon erwahnt ist DirectX nichts anderes als eine Sammlung von Schnittstel-len. Aufgrund dieser Tatsache verstecken sich hinter dem Begriff DirectX zahlrei-che Komponenten, die alle zusammen DirectX bilden. Zu den wichtigsten Kom-ponenten zahlt heut zu Tage wohl DirectX Graphics. Naturlich ist dies nicht dereinzige Baustein von DirectX, DirectX Music, DirectX Sound, DirectX Input bil-den ebenfalls Teile von DirectX [Wik08].

2.1 DirectX Graphics

DirectX Graphics besteht grundsatzlich aus DirectDraw und Direct3D (kurz: D3D)und bietet die Unterstutzung von 2D und 3D Grafik an. Ersteres ermoglicht dendirekten Zugriff auf die Bits der Grafikkarte und zweiteres ist fur das Zeichnenvon Primitiven verantwortlich. Bei dieser Komponente von DirectX kommen zwei

2

APIs zum Einsatz, eine low-level API und eine high-level API. Bei der low-levelAPI handelt es sich um Direct3D, diese API wird gerne bei Anwendungen wie3D Spielen verwenden. Die high-level-API ( Direct3DX ) hingegen ermoglichtin erster Linie 3D-Programmierung mit vertretbarem Aufwand zu realisieren. Di-rect3DX besitzt alle Basisfunktionalitaten von Direct3D [tec08, Wik08].

2.2 Direct Music

DirectX Music ist fur die Wiedergabe von Musik verantwortlich [tec08].

2.3 Direct Input

Diese Komponente unterstutzt verschiedene Eingabegerate wie Maus, Tastatur oderJoystick. Daruber hinaus ist es mit DirectX Input moglich Force Feedback Effekte,wie Vibrationen im Game Pad zu erzeugen [tec08].

2.4 Direct Sound

Wie der Name schon sagt ist Direct Sound fur die Wiedergabe von Soundeffektenverantwortlich. Bei dieser Komponente wird Raumklang unterstuzt. Direct Soundpasst sich daruber hinaus auch automatisch an das Leistungvermogen der instal-lierten Soundkarte an. Ermoglicht werden mit dieser Komponente Basiseffektewie Volume, Frequency Control oder auch Panning. Zusatzliche Effekte wie 3D-Effekte und Equalization, Disortion oder auch Chorus konnte man schon als Fea-ture bezeichnen [tec08].

3

3 Versionsunterschiede zwischen DirectX 9 und DirectX10

DirectX 10.1 ist zur Zeit die neueste Version von DirectX, da bis jetzt aber nurdie Firma ATI/AMD Grafikkarten herstellt, die auch DirectX 10.1 unterstutzen, istwohl DirectX 10 der eigentliche Standard und man kann DirectX 10.1 ruhig nochausser Acht lassen.

Um den Sinn der zahlreichen Anderungen in DirectX 10 im Vergleich zu Di-rectX 9 zu sehen und zu verstehen, muss man sich der eigentlichen Problemstel-lung bei Grafikapplikationen bewusst werden. Alle 3D Befehle verursachen einegewisse Auslastung der CPU, dadurch entstehen zwei wichtige Probleme: Erstenswird die Anzahl der zu renderten Objekte limitiert und zweitens kann nur eine be-stimmte Anzahl von Effekten der Szene hinzugefugt werden. Basierend auf dieserTatsache, lasst sich daraus folgern, dass eine Belastung der CPU nicht nur die Ren-deringperformance limitiert, sondern auch den visuellen Reichtum einer Szene.

Eine Moglichkeit dieses Problem anzugehen, ist das sogenannte Batching. BeimBatching versucht man mehrere Objekte zusammen zu zeichnen. Jedoch entstehtauch hier eine Problematik und zwar kann man Batching auf Objekte mit unter-schiedlichen Materialstrukturen leider nicht anwenden. Eine Losung fur diese Pro-blematik liefert uns DirectX 10 in Form von texture arrays in Kombination mitinstancing 10, was das genau ist wird auf den folgenden Seiten erlautert.

State changes hingegen produzieren zusatzlich auch eine gewisse API Aus-lastung, dies beinhaltet den Wechsel von Texturen, shadern oder vertex Forma-ten, ohne diese Moglichkeiten wurde jedes Objekt gleich aussehen. Da also statechanges uber die API erreicht werden, tragen auch diese eine gewisse CPU Auslas-tung. Hinzu kommt, dass state changes ofter vorkommen als Aufrufe zum Zeichnen(draw calls), da man moglicherweise mehrere Effekte auf ein und das selbe Objektanwenden mochte. Wegen der hohen Kosten von state changes versuchen die Ent-wickler große Anzahlen von Texturen und individuellen Materialien zu vermeiden.Wie schon erwahnt leidet der visuelle Reichtum einer Szene darunter. Abhilfe sollnun die neue Laufzeit von DirectX 10 bringen, welche man wohl als Performan-ce Feature bezeichnen konnte, da man versucht, die Performance im Gegensatz zuDirectX 9 erheblich zu steigern [NVI06].

3.1 Einzelne Unterschiede im Uberblick

Die folgende Tabelle zeigt einige der vielen Unterschiede zwischen DirectX 9 undDirectX 10, einge von diesen Unterschieden werden auf den folgenden Seiten et-was genauer erlautert.

Die verschiedenen Farben kennzeichnen Features, die zusammen gehoren. Sokonnte man die Features in Farbe grun als Features betrachten, die die Performanceverbessern sollen. Die Features in rot hingegen gehoren zu High Level Shader Lan-guage 10 (kurz: HLSL) und Features in blau kennzeichnen die neuen Grafikeffekte.Der Rest gehort zum neuen Shader Modell.

4

Abbildung 1: DirectX 9 im vergleich zu DirectX 10 [NVI06].

5

3.2 Validation

Validation (deutsch: Validierung) gehort zu den Schlusselanderungen der Laufzeitin DirectX 10. Validierung ist nichts anderes, als ein Prozess, der vor einem Auf-ruf zum Zeichnen (draw call) auftritt. Dabei werden Befehle und Daten, die vonder Applikation gesendet wurden, auf fehlerfreie Formatierung uberpruft. Daruberhinaus sichert Validierung die Integritat von Daten, verursacht aber auf der ande-ren Seite eine sehr hohe CPU Belastung. DirectX 9 validiert Ressourcen bei jederNutzung, DirectX 10 hingegen validiert nur einmal bei der Erzeugung der Ressour-ce. Dies schafft einen enormen Performancegewinn. Abbildung 2 verdeutlicht dengenannten Zusammenhang [NVI06].

Abbildung 2: Validierung in DirectX 9 und DirectX 10 [NVI06].

3.3 Texturfelder

Texturfelder (englisch: texture arrays) sind ein komplett neues Feature von Direc-tX 10, welches es ermoglicht bis zu 512 Texturen in einem array zu speichern. Ineinem Texturfeld werden Texturdaten gespeichert, diese Daten bestehen aus eineroder mehreren Subressourcen, welche wiederum als arrays oder mipchains organi-siert sind.

Das besondere an Texturfeldern ist, dass sie in DirectX 10 von Shadern gele-sen und indiziert werden konnen. Die folgende Abblidung veranschaulicht ein 1DTexturfeld, welches aus drei 1D Texturen besteht. Die hier abgebildete 1D Texturbesteht aus drei mip levels. Das oberste mip level ist das großte, nach unten hinnimmt die Große der mip levels bis zur Große eins ab. Die Elemente in jedem miplevel konnen uber den Vektor u (Textur Koordinate) adressiert werden.

Jedes Element in jedem mip level beinhaltet einen einzelnen texel (Bildpunkt,der zu einer Textur gehort). Jedes mip level beinhaltet sozusagen eine Version derAusgangstextur, aber mit sinkendem LOD (level of detail), zwischen den mip le-vels wird dann interpoliert. Texturfelder sind homogen, das heißt jede Textur imTexturfeld muss das gleiche Datenformat und die gleiche Große haben. In Direc-tX 10 existieren daruber hinaus auch 2D Texturen und 2D Texturfelder, sowie 3DTextureressourcen [Bly06].

6

Abbildung 3: 1D Texturfeld, bestehend aus drei 1D Texturen [Bly06].

3.4 Constant Buffers

Eine Konstante (englisch: constant) ist ein vordefiniertet Wert, der in allen Shader-programmen als Parameter verwendet wird. Das Licht einer Szene wird beispiels-weise zusammen mit der Intensitat, der Farbe und der Position durch eine Kon-stante definiert. In Anwendungen, wie Spielen mussen solche Konstante standigaktualisiert werden, da sich die Umgebung in einem Spiel ja auch verandert. DieseAktualisierung verursacht eine starke Belastung der CPU.

Constant buffer hingegen ermoglichen bis zu 4096 Konstanten mit einem einzi-gen Aufruf zu aktualisieren. Dieses Feature wird mit Hilfe von HLSL 10 ermoglicht.Je nach Anwendung konnen constant buffer auf andere Weise aktualisert werden,Per-Primitive constant buffer werden fur jede Primitive aktualisiert, Per-Frameconstant buffer wiederum fur jedes Frame [NVI06].

3.5 Predicated Draw

Dieses Feature wird sei DirectX 10 komplett ohne Eingriff der CPU ermoglicht. Ineiner 3D Szene gibt es oft Objekte, die durch andere Objekte verdeckt sind. Werdendiese verdeckten Objekte trotzdessen gezeichnet verliert man naturlich Rendering-performance. Zu diesem negativen Effekt kommt noch hinzu, dass die gezeichnetenObjekte, die verdeckt sind auf dem finalen Bild keine Anderung verursachen. Ver-deckte Objekte werden in Bezug auf den visuelle Aspekt einer Szene sozusagenumsonst gezeichnet, verursachen aber durch das Zeichnen Performanceverlust.

Bei Predicated Draw werden komplizierte Meshes durch einfache Box Meshesangenahert. Wenn das Zeichnen dieser Box keinen Effekt auf das finale Bild er-zeugt, wird das dazugehorige komplexere Objekt einfach weggelassen. In fruherenDirectX Versionen wurde fur Predicated Draw sowohl die CPU als auch die GPUbenotigt, in DirectX 10 ist dies erstmals nur auf der GPU moglich [NVI06].

3.6 Shader Modell 4.0

Im Vergleich zu DirectX 9, wo das Shader Modell 3.0 unterstutzt wird, gibt es inDirectX 10 die Unterstutzung von Shader Modell 4.0. Die Anderungen im neuenShader Modell lassen sich grundsatzlich in drei Hauptanderungen unterteilen: Der

7

Geometry Shader, unifizierte Shading Architektur und erheblich verbesserte Sha-derressourcen. Wie man in der Abbildung 1 sehen kann wurden zahlreiche ShaderRessourcen erhoht. Eine unifizierte Shading Archtektur hat den Vorteil, dass Res-sourcen, die an einer anderen Stelle der Pipeline entstanden sind, auch an anderenStellen der Pipeline benutzt werden konnen, ohne dass der Programmierer Umwe-ge in der Programmierung gehen muss.

Mit dem geometry shader ist es zum ersten Mal moglich Geometrie sowohl aufder GPU zu erzeugen, als auch wieder zu loschen. Diese beiden Operationen nenntman data amplification und data minimization. Der Geometriy Shader bekommtim Vegleich zum Vertex Shader, der einzelne Punkte als Eingabge bekommt undauch wieder einzelne Punkte als Ausgabe liefert, ganze Primitiven als Eingabe.Diese Primitiven, wie Linien oder Dreiecke konnen naturlich auch vom GeometryShader ausgegeben werden. Der Geometry Shader liegt in der DirectX 10 Pipelinezwischen vertex shader und Rasterisierung. Mit Hilfe des stream outputs konnennun Daten, wieder zuruck zum vertex shader ”gestreamt”werden, ohne durch dieganze Pipeline zu mussen. Durch den Geometry Shader konnen Effekte wie dis-placment mapping 10 ermoglicht werden.

Abbildung 4: DirectX 10 pipeline[Bly06].

8

3.7 DirectX 10 Pipeline

Die DirectX 10 Pipeline besteht aus insgesamt sieben Stationen: der input assemb-ler station, dem vertex shader, dem geometry shader, der stream output Station, derRasterisierungs Station, dem pixel shader und der output merger Station. Im Ver-gleich zur DirectX 9 Pipeline gibt es zwei wesentliche Anderungen, der geometryshader und der stream output. Die folgende Zusammenfassung soll einen kurzenUberblick uber die einzelnen Stationen der Pipeline liefern :

1. Input assembler stage: Verantwortlich fur die Versorgung der Pipeline mit Daten( Dreiecke, Linien und Punkte ).

2. Vertex shader stage: Verarbeitet Eckpunkte, Per-Pixel-Operationen wie Trans-formation.

3. Geometry shader stage: Verarbeitet ganze Primitiven.

4. Stream output: Ist dafur gedacht, Punktdaten aus dem GS oder VS in die Buffersdes Speichers zu streamen

5. Rasterizer stage: Fur das Clipping verantwortlich, Vorbereitung der Primitivenfur den Pixel Shader.

6. Pixel shader stage: Bekommt interpolierte Daten fur ein Primitive und generiertPer-Pixel Daten wie Farbe.

7. Output merger stage: Verantwortlich fur das Kombinieren von verschiedenenArten von Ausgabedaten um das finale Pipeline Ergebnis zu erzeugen [Bly06].

3.8 Instancing 10

Seit DirectX 9 ist es moglich mehrere Instanzen von ein und dem selben Objekt zuerzeugen und diese mit nur einem draw call an verschiedenen Orten zu zeichnen.Das Problem bei dieser Technik ist, dass alle Instanzen die gleiche Textur habenund somit perfekte Klone angefertigt werden. Dadurch konnen beispielsweise beigroßen Schlachten in einem Spiel, die einzelnen Charaktere, die mit instancingerstellt wurden, nicht ihr eigenes Aussehen haben, die Szene wirkt mehr oder we-niger gleich.

Mit DirectX 10 und der Moglichkeit von Texturfeldern brauchen verschiede-ne Instanzobjekte nicht mehr die gleiche Textur zu benutzen. Es werden Objek-te erzeugt, die unterschiedlich aussehen und sich sogar unterschiedlich bewegenkonnen und das mit einer starken Reduzierung der draw calls durch instancing. In-stancing verbessert somit nicht nur den visuellen Aspekt einer Szene sondern auchdie Performance von 3D Applikationen [NVI06].

3.9 Displacement Mapping 10

Displacement mapping 10 ist wie instancing 10 einer der vielen next generationeffects, die mit DirectX 10 kommen. Bei displacement mapping wir oft eine Zer-

9

legung der Geometrie in Dreiecke gemacht und dann mit Hilfe einer Hohenkarte(englisch: height map) zusammengefuhrt.

In DirectX 10 werden Details nun mit Hilfe von drei Tetraedern erzeugt. Diesedrei Tetraeder werden fur jedes Eingabedreieck erzeugt und mit einem ray-tracingAnsatz wird die Geometrie dieser Tetraeder und der Szene berechnet. Es muss alsofur jedes Dreieck ein Prisma erzeugt werden, indem man die Eckpunkte entlangder Normalen verlangert (siehe Abbildung 5). Die Verlangerung geschieht anhanddes maximalen displacements. Die x und y Texturkoordinaten oben auf dem Prismableiben, wie die Texturkoordinaten unten auf dem Prisma, gleich. Die z Texturkoor-dinate wird aber auf 1 gebracht, um das maximale displacement zu reprasentieren.

Abbildung 5: Prisma, welches uber die Dreiecke eines meshes aufgespannt wird [Cor08].

Wurde man nun durch dieses Prisma ray tracen um die Texturkoordinate zu fin-den wo der Augenstrahl ein-/ und austritt, entstehen zwei Probleme. Auf der einenSeite kann man zwar mit Hilfe der height map (zwischen Eintrittspunkt und Aus-trittspunkt) ganz einfach bestimmen, wo der Strahl durch unsere Textur schneidet,aber auf der anderen Seite kann aufgrund von Krummungen im mesh nicht garan-tiert werden, dass die vier Punkte einer Seite des Prismas koplanar sind. Dadurchentstehen Risse in der Textur. Das zweite Problem liegt in der Berechnung derTexturkoordinate beim Austritt des Strahls. Der Eintrittspunkt lasst sich einfachberechnen, da durch depth-buffering immer das nachste Dreieck zum Auge ge-zeichnet wird, kann die Hardware automatisch die Texturkoordinate des Eintrittsentlang der draw faces interpolieren.

Diese beiden Probleme lassen sich durch eine Zerlegung des Prismas in dreiTetraeder losen (siehe Abbildung 6). Hat man das Prisma in drei Tetraeder zerlegtlasst sich die Entferung vom Eintrittspunkt zur hinteren Seite des Tetraeders leichtberechnen, indem man den Augenstrahl mit den Ebenen des Tetraeders schneidet.Der Austrittspunkt lasst sich wiederum aus der Eigenschaft von Tetraedern be-rechnen. Wenn man die Texturkoordinaten der vier Punkte einer Seite des Prismas

10

benutzt, kann man daraus einen sogenannten konstanten Texturgradient, welcherfur alle Tetraeder allgemeingultig ist, berechnen. Mit Hilfe dieses Gradienten undder Texturkoordinate des Eintritts und der Distanz zur hinteren Seite des Tetraederskann der shader die Texturkoordinate des Austritts berechnen.

Abbildung 6: Prisma, welches nun in die drei Tetraeder zerlegt wurde [Cor08].

Nachdem man nun die Texturkoordinate des Eintritts und des Austritts berech-net hat, werden die x-/ und y-Koordinaten dafur verwendet, um in die displace-ment map zu schauen. Dadurch kann man die z-Koordinate, welche die Hohe imursprunglichen Dreieck reprasentiert, mit dem Wert in der displacement map ver-gleichen. Ist die z-Komponente vom Strahl kleiner als die Hohe aus der displace-ment map, wird angenommen, dass hier geschnitten wird und hort auf entlang desStrahls zu suchen. Wenn kein Schnittpunkt gefunden wird, bevor der Austrittspunktdes Strahls erreicht wird, wird das Pixel verworfen. Wenn der Schnittpunkt einmalgefunden ist, muss nur noch die Farbe bestimmt werden. Die Unterschiede zwi-schen normalem mapping und displacement mapping 10 lassen sich den folgendenAbbildungen entnehmen [Cor08].

11

Abbildung 7: Normales mapping [Cor08].

Abbildung 8: Displacement Mapping 10 [Cor08].

4 Ausblick

DirectX 10.1 war wohl die letzte Version von DirectX 10. Mit DirectX 11 will Mi-crosoft die Unterstutzung von Ray Tracing ermoglichen. Zwar soll Rasterisierungnoch erhalten bleiben, die Frage aber, die man sich stellen sollte, ware wohl furwie lange. DirectX 11 soll ”Geruchtenßu Folge mit Windows Vista Service Pack2 Ende 2008 kommen [Har08]. Zahlreiche Computerzeitschriften spekulieren undmelden aber schon jetzt ein Datum nahe 2010.

5 Fazit

DirectX 10 bringt im Vergleich zu DirectX 9 zahlreiche Anderungen, die die Per-formance von 3D-Applikationen verbessern sollen. Die folgende Abbildung zeigteine Tabelle, welche die Minimierung der CPU Belastung etwas naher verdeut-lichen soll. Auf dem Papier sieht das naturlich alles sehr toll aus, in Wirklich-keit, braucht man trotz der verbesserten Performance immer noch Grafikkarten,die im Bereich der 150 bis 250 Euro liegen, um Spiele wirklich auf maximalenDetails spielen zu konnen. Also was hat sich fur den Verbraucher geandert? Teu-rere Hardware verspricht weiterhin bessere Qualitat in Spielen, ist aber den Preisleider nicht wert. Daruber hinaus scheint sich DirectX 10 in manchen Spielegenreserst gar nicht etabliert zu haben, MMORPGS (massively multiplayer online role-playing game) unterstutzen zum jetzigen Zeitpunk gar kein DirectX 10 und manspricht schon von DirectX 11. Spiele wie Egoshooter scheinen aber von DirectX10 wenigstens visuell zu profitieren, die Anschaffung der teuren Hardware auf deranderen Seite ist es aber leider nocht nicht wert.

Abbildung 9: Unterschiede in der CPU Belastung zwischen DirectX 9 und DirectX 10[NVI06].

13

Literatur

[Bly06] David Blythe. Direct3d 10. pages 16–18. Microsoft Corporation, 2006.

[Cor08] Microsoft Corporation. The directx software development kit. MicrosoftCorporation, Marz 2008.

[Har08] PC Games Hardware. Directx 11: Microsoft wechselt das lager undbringt ray-tracing. http://www.pcgameshardware.de/aid,638050/News/DirectX_11_Microsoft_wechselt_das_Lager_und_bringt_Ray-Tracing/, Marz 2008.

[NVI06] NVIDIA. Technical brief microsoft directx 10 : The next generationgraphics api. pages 4–5. NVIDIA Corporation, 2006.

[Rod99] Lutz Roder. Komponentenentwicklung mit dem component object mo-del. In OBJEKTspektrum 3, pages 18–25. LITTLE softwarehouseGmbH, 1999.

[tec08] techFAQ. Was ist directx. http://www.tech-faq.com/lang/de/directx.shtml, 4.06.2008.

[Wik08] Wikipedia. Directx. http://de.wikipedia.org/wiki/DirectX, 4.06.2008.

[Zwi05] Olaf Zwintzscher. In Software-Komponenten im Uberblick. Einfuhrung,Klassifizierung Vergleich von JavaBeans, EJB, COM+, Net, CORBA,UML 2. W3L. Herdecke, 2005.

14