1 / 72

DirectX

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

carr
Download Presentation

DirectX

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DirectX Großes Seminar von Frank Deseyve

  2. Inhalt • Einleitung • Grundlagen • API‘s • DirectDraw & Direct3D • Fazit

  3. 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ß

  4. Geschichte • Game SDK (1994) • Vollbildmodus • Einprozess-System • DirectX 1.0 (1995) • DirectDraw • DirectInput • DirectPlay • DirectSound • DirectX 2.0 (1995) • Direct3D • DirectX 3.0 (1996) • DirectSound3D, MMX Device

  5. 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

  6. 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

  7. 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

  8. 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

  9. COM • Component Object Model • Schnittstelle/Implementierung • Sprachunabhängig • Wiederverwendbar

  10. 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()

  11. COM • Sprachunabhängig • Zeigersystem von COM

  12. COM • Wiederverwendbar • Schnittstellen dürfen nicht verändert werden • Alte Schnittstellen müssen Weitergeführt werden • Abwärtskompatibel • IDirectDrawSurface3 • IDirectDrawSurface7

  13. Architektur • HAL - Hardware Abstraction Layer • HEL - Hardware Emulation Layer

  14. 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

  15. 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

  16. 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

  17. 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

  18. Komponenten • Funktionalität zum Programmieren • Schneller Zugriff auf MM-Fähigkeiten von Windows

  19. Komponenten • DirectX Foundation • DirectDraw • Direct3D Immediate Mode • DirectSound • DirectMusic • DirectInput • DirectPlay

  20. Komponenten • DirectX Media Layer • DirectX Transform • DirectAnimation • DirectShow • Direct3D Retained Mode

  21. DirectDraw

  22. DirectDraw • IDirectDraw7 • Generischer zugriff auf DD Objecte • IDirectDrawClipper • Fensterliste rechteckiger Bereiche • IDirectDrawSurface7 • Video- oder Systemspeicherbereich • IDirectDrawPalette • indizierte Farblisten • IDirectDrawVideoPort • spezielle Videofunktionen der HW

  23. DirectDraw • lpGUID • NULL := Standardtreiber • DDCREATE_EMULATIONONLY := keine HW-Beschleunigung • DDCREATE_HARDWAREONLY := keine Emulation • lplpDD • Platzhalter für DD-Schnittstelle • iid • Typ der Schnittstelle

  24. 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

  25. DirectDraw • lpDDSurfaceDesc2 • Zeiger auf Beschreibung der Oberfläche • lplpDDSurface • Platzhalter für Zeiger auf den Speicherbereich • ZeroMemory(PVOID Destination, DWORD Length);

  26. 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

  27. 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)

  28. DirectDraw • Nach festlegen der SCL • Vor erstellen der Primären OF • Schneidet nicht sichtbare Bereiche ab

  29. 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

  30. Direct3D • Die 3D-Pipeline • Transformation • Translierung • Skalierung • Rotation • Clipping • Im Sichtfeld liegende Objekte • Abschneiden • Weglassen

  31. Direct3D • Beleuchtung • Lichtstärke von Bereichen • Reflexionen • Vorbeleuchtet oder Dynamisch berechnet • Texturierung • Oberflächeneigenschaften • Entfernen verborgener Oberflächen • Hidden Surface Removal • Performance • Rasterisierung • 3D-Welt in 2D-Pixel Darstellung rendern

  32. Direct3D • 3D-Objekte erzeugen • Vektoren fester Länge und Richtung

  33. Direct3D • Positionsvektoren • mit Beleuchtung • mit Farbe • mit Texturen • mit Normalenvektor • sind Vertices

  34. Direct3D • Erstellen der 3D-Objektdaten - Grundfiguren • Dreieckslisten

  35. Direct3D • Erstellen der 3D-Objektdaten - Grundfiguren • Dreiecksstreifen

  36. Direct3D • Erstellen der 3D-Objektdaten - Grundfiguren • Dreiecksfächer

  37. Direct3D • Erstellen der 3D-Objektdaten - Zeichnen • dptPrimitiveType • D3DPT_TRIANGLELIST • D3DPT_TRIANGLESTRIP • D3DPT_TRIANGLEFAN • dwVertexTypeDesc • Typ der Vertices (unbeleuchtet, vorbeleuchtet, aut.beleuchtet)

  38. Direct3D • Besser indizierte 3D-Objektdaten - Zeichnen • lpwIndices • Zeiger auf Array mit den Werten der Indizes • dwIndexCount • Anzahl der Indizes

  39. Direct3D • Optimal komplexe 3D-Objektdaten • Einlesen von .X Dateien • Klasse CD3DFile .Load(); .Scale(); .Render(); • Templates • Verticesheader • Normale-Spitzen • Textur-Kanten • Beleuchtung • Frames • Lightwave, 3DSM • DX-SDK bietet spezielle Konvertierungstools • CONV3DS.EXE

  40. Direct3D • Objekttransformation • Matrizen ermöglichen einfache Berechnung • Klasse D3DMath

  41. Direct3D • Translation Skalierung • Rotation um X,Y,Z Achse

  42. Direct3D • Komplexe Transformationen: Animationen • Templates • FloatKey • TimedFloatKey • AnimationKey • AnimationOptions • Animation • AnimationSet • Auf hierarchierte Objekte • Frames

  43. Direct3D • Oberfläche der Objekte • Texture Mapping • Bitmaps in Surfaces • Max 8 Stufen für Effekt • Überblenden, mischen usw.

  44. Direct3D • 4 Arten der Adressierung (u,v) • Wrap • Periodische Wiederholung • Mirror • Exkates Spiegel an einer Achse

  45. Direct3D • Clamp • Außerhalb liegende Texel werden auf die nächste Kante gemapt • Border Color • Außerhalb liegende Texel werden eingefärbt

  46. Direct3D • Mip-Mapping • Gleiche Texturen in verschieden Qualitäten • Je nach Entfernung

  47. Direct3D • Point-Sampling • Mittelwert aus 2 Texel • Bilineare Filterung • Gewichteter Mittelwert aus 4 Texel • Mit Mip-Maps kombinierbar • Trilineare Filterung • Braucht Mip-Maps • Mittelwert aus dem Vor- und Nachmipmap • Weiche Übergänge, gute Qualität

  48. Direct3D • Beleuchtung der Objekte • Umgebungslicht • Punktlichter Scheinwerfer Gerichtetes Licht

  49. Direct3D • dltType • Art des Lichts • dcvDiffuse, dcvSpecular, dcvAmbient • Farbe des Lichts • dvPosition, dvDirection, dvRange • Positionierung des Lichts • dvFalloff • Lichtintensität Kegel • dvAttenuation • Konstante, Lineare, Quadratische Abschwächung • dvTheta, dvPhi • Kegelwinkel

  50. Direct3D • IDirect3Ddevice7:SetMaterial() • Material der Objektoberfläche • Ambient • Umgebungsreflektion • Diffuse • Diffuse Reflektionen • Specular • Glanzlichter

More Related