Einstieg in Grafikprogrammierung

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
openSuchti
Beiträge: 3
Registriert: 31.03.2009, 15:53

Einstieg in Grafikprogrammierung

Beitrag von openSuchti »

Hallo zusammen.

Zuerst möchte ich mich hier vorstellen:
Ich bin 17 Jahre alt, besuche ein Gymnasium, wobei ich mich vor allem für Mathematik und die Naturwissenschaften interessiere.
Vor 3 Jahren haben wie in der Schule begonnen, etwas mit Pascal (Turbo Pascal :oops: ) zu programmieren und seit etwa einem Jahr versuche ich mir selbst C beizubringen, was sich super kombinieren lässt, da sich beide Sprachen ja ziemlich ähnlich sind.

Man kann also davon ausgehen, dass ich zumindest die grundlegenden Konzepte verstanden habe (zumindest abseits von OOP) und jetzt möchte ich versuchen, mich etwas mit Grafikprogrammierung zu beschäftigen.
Ich möchte jetzt auch keinen "Über-Shooter mit Crysis roXx0r graphic" schreiben, sondern mich einfach mit den Grundlagen und der Funktionsweise der Grafikprogrammierung ausseinander setzen. ;)

Nach einiger Recherche im Netz habe ich es soweit verstanden, dass 3D Grafik von Grafikkarten (GPU) berechnet wird (was auch ziemlich plausiebel klingt). Zu diesen Grafikkarten gibt es die dazugehörigen Treiber, die irgendwie angesprochen werden müssen. Um dies zu tun gibt es 2 wichtige Schnitstellen (API's?), nämlich zum einen Direct3D (der Rest von DirectX ist für Sound und Eingabe verantowrtlich, oder?) und OpenGL.

Bitte korrigiert mich, wenn ich etwas falsch verstanden habe.

Im Moment tendiere ich zu OpenGL, da ich durch meine ideologieiserten jugendlichen Vorstellungen ein großer Fan von Open Source und Linux bin.
Das einzige was ich biserher aber geschafft habe, war es, eine Pyramiede mit dreieckigem Grundriss rotieren zu lassen, indem ich Code-Teile aus mehreren Tutorials zusammengepflück habe. :roll:

Was ich jetzt suche ist ein gutes Tutorial oder auch Buch (wenn mögich nicht zu teuer -> lebe von Taschengeld), das mich etwas genauer in dieses Thema einführt. Sollte auch nicht zu mathematisch sein (11. Klasse), wenn möglich.

Ich weiß nicht wie weit das relevant ist, aber im Moment verwende ich Code Blocks als IDE und MinGW als Compiler (wie gesagt...open source).

Auf jeden Fall ein großes Dankeschön an alle, die sich die Mühe machen, diesen Text zu lesen und vielleicht sogar zu antworten.
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

Re: Einstieg in Grafikprogrammierung

Beitrag von kkrahl »

Wenn du dich für DirectX begeistern kannst fand "Beginning DirectX 10 Game Programming" von Wendy Jones (kostet 23,95 bei Amanzon) recht gut!

mfg

Karl
Benutzeravatar
openSuchti
Beiträge: 3
Registriert: 31.03.2009, 15:53

Re: Einstieg in Grafikprogrammierung

Beitrag von openSuchti »

kkrahl hat geschrieben:Wenn du dich für DirectX begeistern kannst fand "Beginning DirectX 10 Game Programming" von Wendy Jones (kostet 23,95 bei Amanzon) recht gut!

mfg

Karl
DirectX 10 ist bei mir ein Problem. Im Moment habe ich nur ein altes Notebook mit ArchLinux und WinXP als OS. Die Grafikkarte ist eine GeForce Go 6200. DirectX 10 mal auf keinen Fall, DirectX 9 wäre möglich, aber nur wenn es wirkliche Vorteile gegnüber OpenGL bietet (Ideologie, Prinzipien und so... ). ;)

Trotzdem Danke für deine schnelle Antwort.
kkrahl
Beiträge: 56
Registriert: 20.10.2008, 13:41

Re: Einstieg in Grafikprogrammierung

Beitrag von kkrahl »

"Beginning DirectX 9" von Wendy Jones habe ich zwar nicht gelesen sollte aber das selbe sein.

Ich fand das Buch von Ihr gut da sie den Inhalt leicht und verständlich drüber bringt, ist für den einstieg also ideal. Habe auch noch andere Bücher mir gekauft welche aber bei weitem schwerere Kost waren.

mfg Karl
Benutzeravatar
Schrompf
Moderator
Beiträge: 4114
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Einstieg in Grafikprogrammierung

Beitrag von Schrompf »

Für OpenGL gibt es eine prima Tutorial-Reihe, die am Ende bei recht fortschrittlichen Sachen rauskommt: http://nehe.gamedev.net/ - Falls Du Englisch kannst, ist das *der* Anlaufpunkt für OpenGL-Programmierung.

Ich persönlich würde Dir zwar auch mehr zu DirectX raten, aber das ist Geschmackssache... am Ende kommst Du mit beidem zum Ziel. Und Glückwunsch zu dem Überblick, den Du Dir da bereits angelesen hast! Ich finde es toll, in einem Forum einen Neuling zu treffen, der bereits selbst ein bisschen geforscht hat, bevor er fragt. Das sieht man viel zu selten. Von daher: Daumen hoch! Und viel Erfolg/Spaß bei der Programmierung.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.
Benutzeravatar
openSuchti
Beiträge: 3
Registriert: 31.03.2009, 15:53

Re: Einstieg in Grafikprogrammierung

Beitrag von openSuchti »

Hallo ihr beiden und vielen Dank für die Hilfe und das Lob. :)

Englisch ist kein Problem und die Tutorials sehen auf den ersten Blick sehr vielversprechend aus, so dass ich mir in nächster Zeit keine Sorgen um meine Freizeitgestaltung machen muss.

Bisher habe ich GLUT zum Erstellen des Fensters verwendet, kann ich das auch weiter so mit den Tutorials verwenden? Oder gibt es eine bessere Alternative?

Und noch zu guter Letzt eine weiter Frage zum Thema Shader (liegt noch in weiter Ferne, aber was solls...).
Wenn ich alles richtig verstanden habe, so hat OpenGL eine feste Struktur mit festen Befehlen (translatef, color3f usw.). Für neuere OpenGL Versionen gibt es, wie es scheint, Erweiterungen, die sich Shader nennen, mit denen man die Begrenzungen der festen Struktur umgehen kann, um eigenen Befehle und Effekte zu schreiben, stimmt das so weit?
Wie werden Shader geschrieben? Wie ich es verstanden habe gibt es GLSL (OpenGL) und HLSL (Direct3D), um Shader zu schreiben. Baut man diese Shader-Dateien dann in den Quelltext irgendwie ein (include? :roll: ), und sie werden automatisch erstellt, oder braucht es dazu einen eigenen Compiler?
Und sind die "Extensions" im Grunde genommen bereits vorgefertige Shader, oder wie kann man das verstehen?

Wahrscheinlich habt ihr diese Fragen schon hundertfach beantwortet... :oops:
Schon mal Danke im Voraus für eure Geduld, das Thema ist bisher sehr interessant und es gibt so viel zu entdecken. :)
Benutzeravatar
B.G.Michi
Establishment
Beiträge: 163
Registriert: 07.03.2006, 21:38
Alter Benutzername: B.G.Michi
Kontaktdaten:

Re: Einstieg in Grafikprogrammierung

Beitrag von B.G.Michi »

ich selbst programmiere nur directx, soll jetzt kein versuch sein dich zu überreden, da ich ja opengl garnicht kenne, aber ich denke das mit den shadern läuft in opengl ähnlich ab:
also in directx erstellst du einen shader (von mir aus aus einer textdatei) einfach auf die art: D3DXCompileShader() und D3DXCreateShader().
das ergebniss gibst du dann vor dem rendern der vertices der grafikkarte, und die grafikkarte führt den shader aus "bevor" sie die dreiecke auf den bildschirm zeichnet

viel spass noch beim pixelwurschteln 8-)
JFF_B.G.Michi
joeydee
Establishment
Beiträge: 724
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Einstieg in Grafikprogrammierung

Beitrag von joeydee »

NeHe gibts übrigens auch in deutscher Übersetzung, zwar nicht ganz vollständig, aber für den Einstieg praktisch perfekt:
http://www.codeworx.org/opengl_tuts.php

Für 3D-Grafik wirst du dich auf alle Fälle irgendwann mit linearer Algebra befassen müssen: Vektoren, Matrizen, Ebenen,...
Vitamin C
Beiträge: 1
Registriert: 22.10.2003, 12:40

Re: Einstieg in Grafikprogrammierung

Beitrag von Vitamin C »

Wenn du mehr über die Grundlagen der Grafikprogrammierung lernen möchtest, ist das Buch 3D-Grafik Programmierung von Marius Apetri vielleicht ganz interessant für dich. Ich habe ein Buch aus der 1.Auflage, mittlerweile gibt es afaik eine 2. Auflage. Dort werden Grundlagen der Grafikprogrammierung im Zusammenhang mit Mathematik erklärt. Ist meines erachtens nach auch eine sehr gute Gelegenheit mehr darüber zu erfahren wie DX oder OGL - Funktionen intern arbeiten (Benutzt wird im Buch zwar DX aber du kannst fast alles recht einfach auch in OGL umsetzen)). Wenn du OGL programmieren möchtest kann ich dir noch OpenSceneGraph (www.openscenegraph.org) ans Herz legen(Ist nicht dasselbe wie OpenSG). Hierbei handelt es sich um einen opensource Szenengraphen, der intern mit OpenGL arbeitet und quasi einen Wrapper um OGL darstellt. D.h. du kannst viele Sachen, um die du dich sonst explizit kümmern musst, etwa Fenster erzeugen etc. von OSG erledigen lassen und dich um die Grafikprogrammierung selbst kümmern. Auch deine schon angesprochenen Shader kannst du mit OSG umsetzen. Dort steht der Shader- Code (GLSL) übrigens entweder im Quelltext deines Programms oder wird als externe Datei dazugeladen, kannst es dir also aussuchen ;-) Es sind außerdem ziemlich viele Beispiele vorhanden, die du "verwursten" kannst. Stefans Bücher haben mir auch sehr geholfen, Grundlagen im Bereich der Spieleprogrammierung zu verstehen, kann ich also auch nur empfehlen (Wobei die ersten beiden ja mittlerweile etwas betagt sind).

Hoffe das hilft weiter,
Viel Erfolg!
Stefan Zerbst
Moderator
Beiträge: 189
Registriert: 25.02.2009, 20:54

Re: Einstieg in Grafikprogrammierung

Beitrag von Stefan Zerbst »

Schrompf hat geschrieben:Für OpenGL gibt es eine prima Tutorial-Reihe, die am Ende bei recht fortschrittlichen Sachen rauskommt: http://nehe.gamedev.net/
Uaaaaaahhhhhhhh da überkommt mich jedesmal ein kalter Schauer. Man kann sich die Nehe Sachen gerne anschauen aber man sollte sich bewusst sein, dass die vom Code her extrem grauselig sind und man da liebe rnichts kopieren sollte :twisted:

Leider gilt das fast ähnlich für die Samples im DirectX SDK *g* ... aber das nur als kleiner Hinweis für den Hinterkopf. Zum Einstieg haben die natürlich den Vorteil, dass man alles halbwegs lauf- und kompilierfähig in einer Datei hat (also die Nehe Dinger).

Ciao,
Stefan
Antworten