Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

DirectX Großes Seminar von Frank Deseyve. Inhalt Einleitung Grundlagen APIs –DirectDraw & Direct3D Fazit.

Ähnliche Präsentationen


Präsentation zum Thema: "DirectX Großes Seminar von Frank Deseyve. Inhalt Einleitung Grundlagen APIs –DirectDraw & Direct3D Fazit."—  Präsentation transkript:

1 DirectX Großes Seminar von Frank Deseyve

2 Inhalt Einleitung Grundlagen APIs –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 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

51 Direct3D Darstellung auf dem Bildschirm Welttransformation –Für jedes Objekt

52 Direct3D Ansichtstransformation –Der Blickwinkel des Betrachters/Kamera mat: Referenz auf die resultierende Matrix vFrom: Position des Betrachters vAt: Position auf die geschaut wird vWorldUp:Vom Betrachter nach oben gehender Vektor

53 Direct3D Sichtkegel mat: Referenz auf eine existierende Matrix fFov: Sichtfeld in Radian fNearPlane: Abstand der nahen Clippingebene vom Betrachter fFarPlane: Abstand der fernen Clippingebene vom Betrachter

54 Direct3D Bildschirmtransformation dwX: Pixelkoordinate der linken Seite des Viewports dwY: Pixelkoordinate der rechten Seite des Viewports dwWidth: Breite des Viewports in Pixeln dwHeight: Höhe des Viewports in Pixeln dvMinZ:kleinster transformierter Z-Wert für die nahe Clippingebene, wird üblicherweise auf 0.0 gesetzt

55 Direct3D Fortgeschrittenen Funktionen Z-Buffer –Tiefeninformationen

56 Direct3D Stencil-Buffer Indizierte Schablone im Pixelbereich 1-bit –Maskierung von Bildinhalten –Überblendeffekte 8-bit –Echtzeit Volumennebel –Reflexionen

57 Direct3D Bump-Mapping –Strukturierte Objectoberflächen Emboss –Monochrome Textur in Lichtrichtung verschoben –Kummuliert mit Basis Environment –Berechnet reflektierende Licht an jedem Texel –Sehr genaues Abbild –Inkompatibel mit dynamischen Lichtquellen

58 Direct3D Environment-Mapping –Simulation von reflektierenden Oberflächen –Statisch oder Dynamisch

59 DirectSound Flexibler Audiomixer Nutzt AudioHW wenn möglich, sonst SW Schnell, geringe Latenz

60 DirectSound Sampleraten-/Formatkonvertierung 3D-Audiofunktionen –Position und Richtung von Hörer und Schallquellen Doppler-Effekt –Entfernungsabhängige Dämpfung HRTF-Funktionen –Head-Related-Transfer-Functions –Biologisch-physikalischen Eigenschaften des menschlichen Gehörsystems

61 DirectMusic Klangerzeugung über Softwaresynthesizer Ansteuerung externer Synthesizer MIDI-Schnittstelle DirectMusic Producer –Noten, Akkorde, Phrasierung

62 DirectMusic IDirectMusicPerformance Objekt –Dynamische Steuerung zur Laufzeit –Musikstücke mit Eigenschaften belegen DLS - Downloadable Sounds –Tabelle von Instrumentklänge –Egal welche HW, immer gleicher Sound

63 DirectInput Vier Kategorien von Eingabegeräten –Standard-System-Tastatur –Maus-ähnliche Geräte (Maus, Touchpad, Trackball) –Joysticks –Force-Feedback-Geräte (Joystick, Gamepad, Lenkrad, VR-Helm, VR-Anzug)

64 DirectInput Datenmodus –Absolut (üblicherweise für die Achsen von Joysticks) –Relativ (bei unbeschränkten Absolutwerten wie z. B. einer Maus). Datenzugriff –Unmittelbar (es wird eine aktuelle Zustandsbeschreibung des Geräts geliefert) –Gepuffert (Informationen über Änderungen mit Zeitstempel und einem Zählerwert werden gespeichert) Datenabfrage –Polling (die Anwendung kümmert sich selbst durch wiederholtes Abrufen verfügbarer Daten um den Informationsaustausch) –Event notification (Benachrichtigung über anstehende Daten mittels des Win32-API)

65 DirectPlay Zugriff auf Kommunikationsdienste –Internet –Modem –Nullmodem –Lokales Netzwerk (LAN) Emulation der vom zugrundeliegenden Netzwerk nicht unterstützten Funktionen Dynamische Anpassung der Latenzzeiten und Bandbreite

66 DirectPlay Aufbau einer Spielsitzung (Session) –Erzeugung eines DirectPlay-Objekts –Ermittlung der Connection Shortcuts –Auswahl einer bestimmten Verbindung –Bestimmung der bereits existierenden Communication Sessions –Eintreten in eine bestehende, oder Erzeugung einer neuen Sitzung Mit oder ohne Host –Offenen Sitzung –Password Protected –Private

67 DirectPlay Custom Messages –Selbstdefinierte Nachrichten System Messages –Automatisch generierte Nachrichten Datensicherheit –Verschlüsselung –Signierung –Garantie (Zertifizierung)

68 DirectXTransform Dynamische 2D/3D Grafikeffekte auf Bitmapgrafiken –Alpha-Blending –Procedural Surfaces –Morphing –Digitale Filter Umfangreiche Unterstützung Grafikformate Anwendungsbasiert –Webinhalte (HTML) –Plugins für Photoshop –Skripte, Attribute

69 DirectShow Streaming Media Architecture Wiedergabe und Aufnahme von Datenströmen Formatkonvertierung –WAV, MP3, MPEG, AVI Komprimierung von Audio-/Videodaten WDM-Treiber Legacy-Treiber

70 Aussichten Neue Hardware Funktionen –VertexShader 2.0, PixelShader 2.0 –Geometrieberechnungen in HW mit TnL –Kaum Nutzung in Spielen DirectX 9.0 –Steht in den Startlöchern –Vereinfachung der "Shader Programmier-Sprache"

71 Fazit DirectX bietet einmalige Kombination aus multimedialen APIs Praktisch kein Konkurrenzprodukt –Wenn dann nur auf einzelnen Gebieten (OpenGL) –Oder im Professionellem Anwendungsbereich (Studiosoftware) Am Anfang sehr umständlich und ad hoc Flickwerk Mittlerweile ausgreift und teilweise sehr einfach anzuwenden Sehr weit verbreitet –Im Profiebereich als auch im Amateurbereich –Viele Freeware Module –Bücher, Tutorials und Informationen im Internet

72 AUS


Herunterladen ppt "DirectX Großes Seminar von Frank Deseyve. Inhalt Einleitung Grundlagen APIs –DirectDraw & Direct3D Fazit."

Ähnliche Präsentationen


Google-Anzeigen