capribeach software : Grafik

Startseite :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register

Grafik-APIs im Überblick


Programmiersprachen wie C, CPP und auch Python bieten in ihrem Standardumfang keine Grafikfunktionen. Wer beispielsweise Fensteranwendungen für Windows, Computerspiele oder eindrucksvolle Simulationen programmieren will, ist auf die Nutzung spezieller Bibliotheken angewiesen. Es muss eine Entscheidung getroffen werden, welche Grafik-Schnittstelle für das jeweilige Projekt am besten geeignet ist. Zur Wahl stehen vier Alternativen: die Win32 GDI, SDL, OpenGL und DirectX.
Grafik mit GDI

Im Microsoft-Windows-Umfeld können grafische Anwendungen mit der WIN32-API (Application Programming Interface) erstellt werden. Das ist der klassische Weg für die Entwicklung von Windows-Programmen. Sämtliche heute aktuellen Windows-Betriebssysteme basieren auf Win32. Innerhalb von Win32 steht mit der GDI (Graphics Device Interface) eine Bibliothek von Grafikfunktionen bereit, die über C-Befehle angesprochen werden können. Für Spieleprogrammierer ist ein Grundlagenwissen über Win32 und die GDI immer nützlich. Am besten kauft man sich dazu das 1.350 Seiten starke Buch Windows-Programmierung von Charles Petzold. Diese Win32-Bibel ist von einem der Microsoft-Pioniere geschrieben. Es werden sämtliche API-Befehle bis ins Detail erklärt. - Ein Buch, in dem sieben kleinere Spiele allein mit der Win32-API beziehungsweise GDI programmiert werden, existiert in englischer Sprache: „Beginning Game Programming“ von Michael Morrison.

Die GDI hat für größere Spieleprojekte schwerwiegende Nachteile: sie ist langsam und umständlich. Zudem sind fortgeschrittene Techniken der Grafikprogrammierung nicht vorgesehen, so zum Beispiel Texturen für dreidimensionale Modelle.

Grafik mit SDL

Für 2D-Anwendungen steht mit SDL (Simple Direct Media Layer) eine freie Grafik-Bibliothek zur Verfügung, die oberhalb der Betriebssystemebene angesiedelt ist. SDL ist damit Plattform-unabhängig und kann von Windows-Programmierern genauso genutzt werden wie beispielsweise von Linux-, Mac- und Solaris-Entwicklern. Die SDL ist in C geschrieben und kann mit CPP genutzt werden. SDL unterstützt nicht nur den Bereich Grafik, sondern auch die Wiedergabe von Sound, Maus- und Joysticksteuerung und die Tastaturabfrage. Im Vergleich zu den Möglichkeiten der Win32/GDI-Programmierung bietet SDL einen vereinfachten und Plattform-unabhängigen Weg. Zudem ist es möglich mit der SDL eine OpenGL-Anwendung zu entwickeln, so dass beide Bibliotheken kombiniert zum Einsatz kommen. SDL plus OpenGL (Open Graphics Library) ist beispielsweise für Linux-Programmierer die Alternative zu DirectX. OpenGL alleine verfügt nicht über Sound- und Inputfunktionen und kann daher nur mit Direct3D verglichen werden, einer Untermenge des großen DirectX-Entwicklungspaketes. Für die SDL existieren Bindungen in einer Reihe weiterer Programmiersprachen (Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk).

Grafik mit OpenGL und DirectX

Im Bereich moderner 3D-Anwendungen gibt es nur zwei Möglichkeiten: DirectX und OpenGL. DirectX ist das umfassende Multimedia-Entwicklungspaket von Microsoft. Die meisten der professionellen 3D-Spiele basieren auf DirectX. OpenGL ist die Alternative für Plattform-übergreifende Entwicklung, da diese Grafik-API nicht nur für Windows, sondern auch für andere Betriebssysteme ausgelegt ist. OpenGL ist im Bereich von Wissenschaft und Medizin weit verbreitet. Es ist eine Bibliothek, die über reine C-Befehle angesprochen wird. Wer in die 3D-Programmierung einsteigt, wird im Internet immer wieder auf leidenschaftliche Diskussionen zu den Alternativen DirectX beziehungsweise Direct3D versus OpenGL treffen. Mit beiden APIs können beeindruckende 3D-Welten erschaffen werden.
OpenGL wurde in der Spieleprogrammierung durch John Carmack und id Software bekannt. Carmack realisierte 3D-Shooter wie Doom und Quake mit OpenGL. Wie der heutige Starentwickler zusammen mit John Romero angefangen hat, ist mitreißend in dem Taschenbuch „Master of Doom: How Two Guys Created an Empire and Transformed Pop Culture“ von David Kushner beschrieben.

Computerspiele mit aufwendiger Grafik werden mit C und CPP programmiert, da diese systemnahen Sprachen klare Geschwindigkeitsvorteile bieten. Compilersprachen wie C und CPP sind immer dann schneller als Interpretersprachen wie Python, wenn in kurzer Abfolge beispielsweise 3D-Charaktere auf dem Bildschirm bewegt werden sollen und die Simulation unmittelbar auf Reaktionen des Spielers reagieren muss. (Selbstverständlich können auch mit Java Spiele programmiert werden. Allerdings lassen sich mit Java die klassischen Grafik-APIs Win32, OpenGL und DirectX nicht direkt ansprechen. Es werden Programmbibliotheken wie Java3d von Sun oder auch Jogl - der bekannteste Java-Wrapper für OpenGL - genutzt.)

Spiele mit Python und Pygame

Pygame ist die Bindung von SDL für Python. Pygame ist also eine Multimedia-Bibliothek, die komplett auf Basis der SDL arbeitet. Das Paket besteht aus einer Menge von Modulen, die speziell für die Spieleprogrammierung entwickelt wurden. Der Quellcode sämtlicher Pygame-Module ist frei zugänglich und steht unter der LGPL Lizenz. Kommerzielle und nichtkommerzielle Programme können mit Pygame entwickelt werden.

Pygame macht den Zugriff auf die Grafikleistungen der SDL besonders einfach. Allerdings ist Python als Interpretersprache nicht optimal, wenn es um rechenintensive 3D-Darstellungen geht. Ideal ist in diesen Fällen die Kombination von Python mit C oder CPP. Aufgrund der modularen Struktur eines Python- beziehungsweise Pygame-Projektes lässt sich ein Spiel beispielsweise ideal in Python aufbauen und testen. In einem zweiten Schritt werden dann die Einheiten des Spiels, die hohe Rechenleistung benötigen, in C oder CPP umgesetzt und nahtlos in die Architektur eingebunden. Ein weiterer Bereich, in dem Python Zeit- und Performancevorteile bringt, ist die Skriptsteuerung. Es ist sinnvoll, verschiedene Einstellungen des Spieles aus dem Quellcode des Programmes auszulagern und über ein Skript zu steuern. So können beispielsweise Eigenschaften der Spielercharaktere ausgetestet werden, ohne dass das Programm immer wieder neu kompiliert werden muss. Python hat eine optimale Gummiband-Funktion. Es verbindet zuverlässig verschiedene Technologien in einem größeren Spieleprojekt. Für kleinere Spieleprojekte im zweidimensionalen Bereich ist Python längst eine beliebte Alternative. Und auch in großen Projekten kommt die flexible Sprache zum Einsatz. Beispiele sind Civilization IV von Sid Meier und Toontown Online von den Disney Studios.


CategoryPython

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki
Page was generated in 0.1143 seconds