Großes Seminar von Frank Deseyve

Slides:



Advertisements
Ähnliche Präsentationen
Computer Graphics Shader
Advertisements

Multimediasteuerungen
LASH. Geschichte 1996: FutureWave entwickelt das Animationsprogramm FutureSplash-Animator Macromedia übernimmt FutureWave –FutureSplash-Animator und -Player.
Wird euch präsentiert von Ben Polidori
Neuerungen in PalmOS® 5 Florian Schulze (SS 2003).
Datenbankzugriff im WWW (Kommerzielle Systeme)
Game Engine Architecture - J. Gregory
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Microsoft Windows 2000 Terminal Services
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
Java: Grundlagen der Sprache
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
DOM (Document Object Model)
5. Beleuchtung und Schattierung
Simulation und 3D-Programmierung Praxis: Dreiecke, Texturen, Vertex-Buffer Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung.
Windows Universität zu Köln
Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung
Grundbegriffe der 3D-Spiele-Programmierung
OGRE Object-Oriented Graphics Rendering Engine Szenen-orientierte, flexible 3D Engine in C++ Hardware-beschleunigte 3D Grafiken Unterstützt Direct3D und.
Java3d „Licht und Material“
Windows 98 Microsoft Windows 98 - Ein technischer Überblick Jörg Kramer University Support Center.
Introducing the .NET Framework
OpenGL mit Delphi Allgemeines OpenGL-Funktionsbezeichnungen
Einführung in Visual C++
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG Klassen und Objekte
Computergrafik Vom Dreieck zum Ego-Shooter Olaf Müller
Displacement Mapping Dynamische Generierung detaillierter Geometrien
Special Effects Realistischeres Rendern einer Scene.
Kann man damit vernünftig arbeiten?
FHP - Fachbereich Bauingenieurwesen
Übersicht Motivation Konzeption Umsetzung/ Implementierung
Einsteigerkurs Andy Reimann - Mai Intro Trailer.
Web-HMI einbinden SPS-Technik mit Video, Multimedia und Entertainmentsystemen kombinieren I Peter Steib.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
3D- Spieleprogrammierung
Effekte 1 Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung.
Typo3 Templates und TypoScript
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Java für Fortgeschrittene
Shader.
Verhalten von Objekten in der Szene
Medizinische Visualisierung
Camera, Lights, Action… Dirk Primbs Developer Evangelist
Präsentation von Lukas Sulzer
Oliver Spritzendorfer Thomas Fekete
Von Patrick Schmid und Christian Piwecki
Beleuchtungsmodelle, Schattierungsmodelle
Präsentation der Diplomarbeit:
Augmented Reality mit korrekter Beleuchtung Thorsten Grosch
Multimedia in Java Thomas Witschel, Kerstin Steinert & Erik Reinhard.
Grundlagen, Prinzipien und Aufgaben eines Betriebssystems
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung WS 2013/14.
AUDIO im WEB HTML & AUDIO WEB_0302 WEBDESIGN MODUL 03 h.huetter 1 Sound-Dateien können, ebenso wie Video-Dateien, auf mehrere Arten in HTML-Dateien integriert.
Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002.
Endgeräte Seminar HWS 2006/07 - Multimedia-Protokolle für den Wohnzimmer - PC Johannes Kieß
Universität zu Köln WS 2014/15 HKI – Softwaretechnologie 2 (Teil 1) Von Tilo Kochs.
Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken.
1. Charakteranimation 2. PlugIns schreiben und laden Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 2010/2011.
TCP/IP.
AGP, PCIE Bus im Vergleich AGP: Accelerated Graphic Port 1997 von Intel entwickelt. Ab 1998 AGP dann in großem Stil in PCs als Grafikkartensteckplatz verwendet.
Die Renderpipeline.
Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Softwaretechnologie II / Visuelle Programmierung Dozent: Prof. Dr. Manfred Thaller WS.
Multimedia und Virtual Reality Vorlesung am Martin Kurze Multimedia in 3D.
Das Internet Ein Netzwerk, das viele Rechner miteinander verbindet
MS Windows Jan Beßelmann Lucie Dolenkova. Systemsteuerung Anpassung Anzeige Benutzerkonten Datum und Uhrzeit Energieoptionen Geräte-Manager Indizierungsoptionen.
Komponenten des Computers
 Einführung  Szenengraphen  Bestandteile  Eingabe  JOGL  LWJGL  Beispiele  ARDOR3D Games 04/23/12Ardor 3D – Holzwarth/Kau 2.
Objektorientierte Programmierung §Klassen §Objekte §Attribute §Eigenschaften §Methoden §Datenkapselung §Ereignisse §Vererbung §Entwicklungszeit §Laufzeit.
Ein Spiel mit der SDL - Teil I. Ein Spiel mit der SDL  kostenlose Bibliothek – Simple DirectMedia Layer Grafik darstellen Benutzereingaben abfragen Sounds.
 Präsentation transkript:

Großes Seminar von Frank Deseyve 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 Moderne 3D Spiele Software Maximale Belastung der HW Audiovisueller Hochgenuß

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

Geschichte DirectX 5.x (1997) DirectX 6.x (1998) 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) DirectX 8.x (2000) 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 Windows 98 Windows NT/2000 Windows XP bis DX 8.0a, danach eingestellt Windows 98 DX 8.1 Windows NT/2000 SP6 ~DX3.0a / DX 8.1 Windows XP

Vorbereitungen DirectX SDK 8.1 MS Visual C++ 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 Global Unique Identifier QueryInterface() Global Unique Identifier Jedes Schnittstelle bekommt einmalige Nummer egal wie oft aufgerufen egal aus wieviel verschiedenen Prozessen Referenzzähler AddRef() Release()

COM Sprachunabhängig Zeigersystem von COM

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

Architektur HAL - Hardware Abstraction Layer HEL - Hardware Emulation Layer

Architektur HAL - Hardware Abstraction Layer TnLHAL 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 RGB Reference Device 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

Komponenten DirectX Foundation DirectDraw Direct3D Immediate Mode DirectSound DirectMusic DirectInput DirectPlay

Komponenten DirectX Media Layer DirectX Transform DirectAnimation DirectShow Direct3D Retained Mode

DirectDraw

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

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

DirectDraw hWnd dwFlags Handle des Obersten Fenster der Anwendung DDSCL_Normal := Verhalten wie Windows-Anwendung DDSCL_EXCLUSIVE := Alleiniger Grafik HW Zugriff DDSCL_FULLSCREEN := Vollbildmodus DDSCL_ALLOWREBOOT := Erlaubt Neustart

DirectDraw lpDDSurfaceDesc2 lplpDDSurface 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 Primäre 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

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

Direct3D Beleuchtung Texturierung Entfernen verborgener Oberflächen 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

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

Direct3D Positionsvektoren sind Vertices mit Beleuchtung mit Farbe mit Texturen mit Normalenvektor sind Vertices

Direct3D Erstellen der 3D-Objektdaten - Grundfiguren Dreieckslisten

Direct3D Erstellen der 3D-Objektdaten - Grundfiguren Dreiecksstreifen

Direct3D Erstellen der 3D-Objektdaten - Grundfiguren Dreiecksfächer

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

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

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

Direct3D Objekttransformation Matrizen ermöglichen einfache Berechnung Klasse D3DMath

Direct3D Translation Skalierung Rotation um X,Y,Z Achse

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

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

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

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

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

Direct3D Point-Sampling Bilineare Filterung Trilineare Filterung 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

Direct3D Beleuchtung der Objekte Umgebungslicht Punktlichter Scheinwerfer Gerichtetes Licht

Direct3D dltType dcvDiffuse, dcvSpecular, dcvAmbient 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

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

Direct3D Darstellung auf dem Bildschirm Welttransformation Für jedes Objekt

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

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

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

Direct3D Fortgeschrittenen Funktionen Z-Buffer Tiefeninformationen

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

Direct3D Bump-Mapping Emboss Environment 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

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

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

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

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

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

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)

DirectInput Datenmodus Datenzugriff Datenabfrage 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)

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

DirectPlay Aufbau einer Spielsitzung (Session) Mit oder ohne Host 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

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

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

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

Aussichten Neue Hardware Funktionen DirectX 9.0 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"

Fazit DirectX bietet einmalige Kombination aus multimedialen API‘s 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

AUS