DirectX. Großes Seminar von Frank Deseyve. Inhalt. Einleitung Grundlagen API‘s DirectDraw & Direct3D Fazit. Warum DirectX?. PC mit MS-DOS Zu viele verschiedene Kombinationen Einheitlicher Zugriff auf verschiedene Hardware Schnell Effektiv Direkt Marktstrategie Windows forcieren
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Warum DirectX? • PC mit MS-DOS • Zu viele verschiedene Kombinationen • Einheitlicher Zugriff auf verschiedene Hardware • Schnell • Effektiv • Direkt • Marktstrategie • Windows forcieren • Moderne 3D Spiele Software • Maximale Belastung der HW • Audiovisueller Hochgenuß
Geschichte • DirectX 5.x (1997) • Vertex Buffer • Force Feedback • 3D Audio Hardware Acceleration • Multimonitor Support • DirectX Setup • DirectX 6.x (1998) • Single-Pass Multitexturing • Bump Mapping • Texture Compression • Stencil Buffers • DirectMusic API
Geschichte • DirectX 7.x (1999) • Transform and Lightning HAL Device • Vertex Blending • Cubic Environment Mapping • Spezieller Visual Basic Support • DirectX 8.x (2000) • DIRECT3DX • Vertex Shader • Pixel Shader
Geschichte • Windows 95 • bis DX 8.0a, danach eingestellt • Windows 98 • DX 8.1 • Windows NT/2000 • SP6 ~DX3.0a / DX 8.1 • Windows XP • DX 8.1
Vorbereitungen • DirectX SDK 8.1 • Runtime Version • Debug Version • MS Visual C++ • Einstellen der Pfadinformationen der DX-SDK Dateien • Linken von zusätzlichen Bibliotheken (ddraw.lib, dxguid.lib, d3dim.lib) • Einbinden der Header je nach verwendeter Funktion
COM • Component Object Model • Schnittstelle/Implementierung • Sprachunabhängig • Wiederverwendbar
COM • Schnittstelle/Implementierung • IUknown • QueryInterface() • Global Unique Identifier • Jedes Schnittstelle bekommt einmalige Nummer • egal wie oft aufgerufen • egal aus wieviel verschiedenen Prozessen • Referenzzähler • AddRef() • Release()
COM • Wiederverwendbar • Schnittstellen dürfen nicht verändert werden • Alte Schnittstellen müssen Weitergeführt werden • Abwärtskompatibel • IDirectDrawSurface3 • IDirectDrawSurface7
Architektur • HAL - Hardware Abstraction Layer • Schnittstelle zwischen Hardwaretreiber und Applikation • Kapselt die Funktionalität der HW • Enthält Tabelle der unterstützten Funktionen • TnLHAL • Muß von Hardware unterstützt werden • Erstmalig Geometrie Berechnungen in HW
Architektur • HEL - Hardware Emulation Layer • Die meisten Funktionen können emuliert werden • Signifikant langsamer als HAL • RGB • Softwarerendering • Vereinfachtes Modell • Schnelleres testen der Programme • Reference Device • Exaktes abbilden der HW in Software • Zum überprüfen der programmierten Effekte auch ohne vorhandene HW • Praxis: HEL wird nicht ausgeführt, sondern übersprungen
Performance • Problem: Windows Multitasking BS • Einzelne Ressourcen verteilt auf mehrere Prozesse • Konservatives Scheduling dieser Ressourcen • Gegenseitiges unterbrechen der Prozesse • Träger Overhead von Windows • Anmeldung, Prüfen, Verarbeitung, Weiterleiten, Ausführen
Performance • Lösung: Pseudo Single Process System • Ressourcen "bis auf weiteres" anfordern • Zustände sichern • In der Regel wird der aktive Prozeß durchgesetzt • Im Unterbrechungsfall wird vor Wiederaufnahme der alte Zustand hergestellt oder ein Fehler gemeldet
Komponenten • Funktionalität zum Programmieren • Schneller Zugriff auf MM-Fähigkeiten von Windows
DirectDraw • lpGUID • NULL := Standardtreiber • DDCREATE_EMULATIONONLY := keine HW-Beschleunigung • DDCREATE_HARDWAREONLY := keine Emulation • lplpDD • Platzhalter für DD-Schnittstelle • iid • Typ der Schnittstelle
DirectDraw • hWnd • Handle des Obersten Fenster der Anwendung • dwFlags • DDSCL_Normal := Verhalten wie Windows-Anwendung • DDSCL_EXCLUSIVE := Alleiniger Grafik HW Zugriff • DDSCL_FULLSCREEN := Vollbildmodus • DDSCL_ALLOWREBOOT := Erlaubt Neustart
DirectDraw • lpDDSurfaceDesc2 • Zeiger auf Beschreibung der Oberfläche • lplpDDSurface • Platzhalter für Zeiger auf den Speicherbereich • ZeroMemory(PVOID Destination, DWORD Length);
DirectDraw • Arten von Oberflächen • Offscreen OF • Zum Ablegen andere Bitmapobjecte • Primäre OF • Zur Darstellung auf dem Bildschirm • Hintergrundbuffer • Zum schnellen wechseln mit der POF (Flippen) • Z-Buffer • Tiefeninformationen, Sichtbarkeit von Objekten
DirectDraw • Schnelles Wechsel der Oberflächen während des Strahlrücklaufs • Erstellen einer Umschaltungskette • DDSurfaceDescription • Animationen kleiner Objekte (Sprites) • Animationen des ganzen Bildschirms (Parallax Scrolling)
DirectDraw • Nach festlegen der SCL • Vor erstellen der Primären OF • Schneidet nicht sichtbare Bereiche ab
DirectDraw • Zeichnen auf Oberflächen • Zugriff über DirectDraw • BitBlt(); oder BltFast(); • Direkter Zugriff auf den Speicherbereich mittels Lock(); • Skalierungen • Binäre Masken • Zugriff über das GDI für komplexere Zeichentools • GetDC(); • Text • Kurven • Geometrische Figuren