ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

48
ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Transcript of ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Page 1: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Von Patrick Schmid und Christian Piwecki

vs.

Page 2: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Übersicht

Graphikengines

Patrick Schmid Christian Piwecki 12.Info

Schnittstellen für Graphikengines

Grafikschnittstelle OpenGL

Grafikschnittstelle DirectX

Unterschiede DirectX und OpenGL

Programmierbeispiel Würfel OpenGL

Programmierbeispiel Würfel DirectX

Fazit

ComGraphik DirectX vs. OpenGL 13.07.2005

Page 3: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Graphikengines

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

ComGraphik DirectX vs. OpenGL 13.07.2005

Patrick Schmid Christian Piwecki 12.Info

Eigenständiger Programmteil

Erleichtern Darstellung von Computergrafik

Standardfunktionen bereits implementiert

Basieren auf einer Grafikschnittstelle (z.B. DirectX, OpenGL, …)

Page 4: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Graphikengines

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Funktionen einer Grafikengine

Geometrische Objektbeschreibung

Oberflächentexturen

Licht und Schatten

Transparenz

Spiegelungen

Partikelsysteme

Page 5: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Graphikengines

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Funktionen einer Grafikengine

Beinhaltet Großteil der Viewpipeline

Erstellt Objekt im Modelling Coordinate System

Transformiert dieses ins World Coordinate System

Führt View Mapping durch

Beinhaltet bereits implementierte Vertex- und Pixelshader

Page 6: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Graphikengines

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Gute Graphikengine zeichnet sich aus durch:

Schnelligkeit -> extrem aufwändige Optimierungen der Berechnungen

große Anzahl bereits implementierter Funktionen

schönes Ergebnis

Bewertung einer Grafikengine

Page 7: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Meilensteine

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Doom I-III id Software 1993-2004

Unreal I-III Epic Games 1999-2006 ?

Quake I-VI id Software 1994-2005?

Unreal T. Epic Games 1999-2006?

QuakeEngine

DoomEngine

UnrealEngine

Farcry Crytek 2004-2005?CryEngine

Half Life Valve 1997QuakeEngine

Half Life² Valve 2004-2005?SourceEngine

Page 8: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Schnittstellen für Graphikengines

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Implementiert als API

(Application Programming Interface)

Definition

plattformunabhängig

programmiersprachenunabhängig

Große Programmbibliothek mit elementaren Funktionen

Page 9: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Schnittstellen für Graphikengines

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

DirectX

Bekannte Schnittstellen für Graphikengines

Quickdraw3D (Apple)

Glide (3DFx)

OpenGL

Java3D (sun)

Mesa (ähnlich OpenGL)

Warp3D (Amiga)

Page 10: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Vorgänger: IrisGL von SGI (1980)

Geschichte

Ziel: portierfähige Graphic Library

ARB (Architecture Review Board) an Entwicklung von OpenGL beteiligt

Zur ARB gehören u.a.:

3D Labs, ATI, Apple, Dell, HP, Matrox, nVidia, IBM, Intel, Microsoft (bis März 2003), Silicon Graphics, Digital Equipment (DEC), Evans & Sutherland und Intergraph

Page 11: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

1992 erscheint OpenGL 1.0

Geschichte

seit 7. September 2004 OpenGL 2.0

OpenGL ist OpenSource

Page 12: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

OpenGL - Bibliotheken

GLX

WGL

AGL u. CGL

Schnittstelle zwischen OpenGL und X-Windowsystem

Schnittstelle zwischen OpenGL und Windows

Schnittstelle zwischen OpenGL und MAC

Page 13: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

GLUT (OpenGL Utility Toolkit)

OpenGL - Bibliotheken

Java3D

OpenAL

API für Java um 3D Anwendungen für Java2 Environments zu entwickeln

Umfangreiche Bibliothek die Methoden zur Fenstererzeugung sowie zum Input – Handling beinhaltet

Open Audio Library

Page 14: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Include – Dateien: gl.h glu.h glux.h

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

IDE Konfiguration

glaux.dll im gleichen Verzeichnis

Libraries für Linker: OpenGL32.lib GLu32.lib GLaux.lib

Page 15: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

glutInit(&argc, argv);Initialisiert die GLUT LibraryglutInitWindowSize(int width, int height);Setzt die Größe des FenstersglutInitWindowPosition(int x, int y);Setzt die Position des FenstersglutCreateWindow( ¨WindowTitle¨);Erstellt das Fenster mit dem Parameter als TitelglutDisplayFunc(display);Deklariert die Funktion die für den Fensterinhalt verantwortlich istglutReshapeFunc(reshape);Deklariert die Funktion die aufgerufen wird, wenn das Fenster in der Größe verändert, bewegt oder minimiert/maximiert wird.glutMainLoop();Verhindert dass das Fenster gleich wieder beendet wird

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Die GLUT - Library

Page 16: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Unterscheidung in 2 Arten von Funktionen:1. Funktionen die die OpenGL – Engine konfigurieren2. Funktionen die zu zeichnende 3D Objekte definieren

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Erzeugung von Grafik

Bevor Grafik angezeigt werden kann muß erst einFenster vorhanden sein

OpenGL muß mit dem Window Context (DC) und dem Device Context (WC) verknüpft werden

Page 17: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Mit glEnable(FLAG); Flag aktivieren

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

OpenGL – Engine konfigurieren

Mit glDisable(FLAG); Flag deaktivieren

Es gibt Flags für: Verschiedene Filter Z-Buffer Alphatest Dithering Blending Lichtquellen Zeichenstil für Linien uvm.

Page 18: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Beispiele:

glEnable(GL_LIGHT1); aktiviert Lichtquelle 1

glEnable(GL_DEPTH_TEST); aktiviert Z-Buffer glEnable(GL_DITHER); aktiviert Dithering

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

OpenGL – Engine konfigurieren

Page 19: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Zu zeichnende Elemente werden immer mit glBegin(MODE); begonnen glEnd(); beendet

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

3D – Objekt definieren

Dazwischen werden z.B. Punkte gesetzt Farben zugeordnet Texturkoordinaten zugeordnet

Page 20: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

glBegin(GL_TRIANGLES); glBegin(GL_QUADS); glBegin(GL_POLYGON); glBegin(GL_POINTS); glBegin(GL_LINES); glBegin(GL_LINE_STRIP); glBegin(GL_LINE_LOOP); glBegin(GL_TRIANGLE_STRIP); glBegin(GL_TRIANGLE_FAN); glBegin(GL_QUAD_STRIPS);

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

3D – Objekt definieren

glVertex3f(0.0f, 0.0f, 0.0f);

Punkt definieren:

Modes:

Page 21: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Page 22: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Beispiel:

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

3D – Objekt definieren

glBegin(GL_TRIANGLES);glColor3f(1.0f, 0.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(1.0f, 0.0f);glVertex2f(0.0f, 1.0f);

glEnd();

Ergebnis: rotes Dreieck

Page 23: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Grafikschnittstelle OpenGL

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Sonstige Funktionen

glLoadIdentity(); Sprung zurück zum Ursprung

glRotatef(winkel, x, y, z);

glTranslatef(x, y, z); Verschiebt um x, y, z

Rotiert um entsprechende Achse

Page 24: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Grafikschnittstelle DirectX

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Kurze Geschichte

Von Microsoft entwickelt

1. Game SDK -> Windows 95

Umbenannt in DirectX SDK

Was ist DirectX ?

Einheitliche, geräteunabhängige Schnittstelle

Enthält Ansammlung versch. Komponenten zurMulti-Media Entwicklung unter Windows

Sicherheit für Programmierer für Lauffähigkeitunter allen Windows-Systemen

Page 25: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Leistungsfähigkeit

Besteht aus zwei Schichten: HAL und HEL

HAL: Hardware Acceleration Layer = Funktionen die direkt von HW unterstützt werden

HEL: Hardware Emulation Layer

= Funktionen die HW nicht direkt unterstützt

Page 26: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

DirectX besteht aus folgenden Komponenten

DirectSound -> HW beschleunigtes Mixen von Sound

DirectMusic -> Wiedergabe und Komposition von Musik

DirectShow -> Abspielen von Multimediadateien

DirectInput -> Für Eingabegeräte

Direct3DX Utility Library -> Funktionen für Direct3D

DirectPlay -> Unterstützung für Netzwerkverbindungen

Page 27: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Direct3D

DirectDraw

Geometrietransformationen(Bewegung, Skalierung,Rotation)BeleuchtungTexturierung

Direkter Zugriff auf Grafikkarte und Bildspeicher

Schnelles Verschieben zwischen Grafikkarte undHauptspeicher

Page 28: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Arbeiten mit Direct3D

Einbinden des Header d3d9.hEinbinden der Library d3d9.lib

Richtige DirectX Version überprüfenD3D_SDK_VERSION

Device einstellenD3DDEVTYPE_HAL

Desktopmodus festlegenGetAdapterDisplayMode

Front & Backbuffer einstellenD3DSWAPEFFECT_DISCARD

Objekte aus Arbeitsspeicher entfernen !

Page 29: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Grundlegende Funktionen

LPDIRECT3D9Erstellen eines Direct3D Objekts

LPDIRECT3DDEVICERendering Schnittstelle definieren

D3DPRESENT_PARAMETERSUm Rendering Schnittstelle zu erstellen hierdefinieren

UINT AdapterWelche Grafikkarte verwenden

D3DDEVTYPE_HALHardwarebeschleunigung benutzen

Page 30: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Grundlegende Funktionen

DrawPrimitiveZeichnet über Vertices angegebene Objekt

! Direct3D speichert Vektordaten in Vertex Buffer

Punktlisten -> Jeder Punkt wird einzeln ausgegeben

Linienlisten -> Je 2 Punkte durch Linie verbunden

Dreieckslisten -> Je 3 Punkte zu einem Dreieck

Dreiecksfächer -> Alle Punkte spannen mit 1. einen Fächer auf

Dreiecksstreifen -> Punkte werden der Reihe nach als breiter Streifen aus Dreiecken

dargestellt

Page 31: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Punktliste (D3DPT_POINTLIST)

Linien-Liste (D3DPT_LINELIST)

Page 32: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Dreieck-Liste (D3DPT_TRIANGLELIST)

Dreieck-Fan (D3DPT_TRIANGLEFAN)

Page 33: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

Dreieck-Strip (D3DPT_TRIANGLESTRIP)

Page 34: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Grafikschnittstelle DirectX

D3DVERTEX g pvTriangleVertices[3];D3DVEKTOR p1{0.0f,3.0f,0.0f};D3DVEKTOR p2{3.0f,-3.0f,0.0f};D3DVEKTOR p3{-3.0f,-3.0f,0.0f};

g pvTriangleVertices[0]=D3DVERTEX(p1, vNormal,0,0);g pvTriangleVertices[1]=D3DVERTEX(p2, vNormal,0,0);g pvTriangleVertices[2]=D3DVERTEX(p3, vNormal,0,0);

pd3dDevice->DrawPrimitive(D3DPT TRIANGLELIST,D3DFVF VERTEX,g pvTriangleVertices,3,NULL);

Die Eckpunkte des Dreiecks sind mit D3DVEKTOR gegeben.

Page 35: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Unterschiede DirectX & OpenGL

Page 36: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel OpenGL

Page 37: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel OpenGL

Page 38: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel OpenGL

Page 39: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel OpenGL

Page 40: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Programmierbeispiel Würfel DirectX

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Page 41: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel DirectX

Page 42: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel DirectX

Page 43: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel DirectX

Page 44: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel DirectX

Page 45: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel DirectX

Page 46: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Programmierbeispiel Würfel DirectX

Page 47: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

ComGraphik DirectX vs. OpenGL 13.07.2005

Grafikengines

IF für Grafikengines

Gra. IF. OpenGL

Gra. IF. DirectXUnterschiede DX & OGL

Prog.Bsp. OpenGL

Prog.Bsp. DirectX

Fazit

Patrick Schmid Christian Piwecki 12.Info

Fazit

Gleichwertige Ergebnisse

Bessere Performance nur durch optimierten Quellcode

Wichtiger Vorteil von OpenGL gegenüber DirectX -> Plattformunabhängigkeit

Für Anfänger OpenGL viel besser geeignet

Tendenziell mehr Software (SPIELE) unter DirectX als unter OpenGL

Page 48: ComGraphik DirectX vs. OpenGL 13.07.2005 Von Patrick Schmid und Christian Piwecki vs.

Vielen Dank für die Aufmerksamkeit !

Noch Fragen ?