2009-08-15 11 views
0

Ich bin ein professioneller Entwickler, der hauptsächlich mit Java arbeitet, aber in meiner Freizeit spiele ich gerne mit verschiedenen Sprachen und Bibliotheken. Die Sache ist, dass ich anfangen möchte zu lernen, wie man 3D-fähige Anwendungen oder Spiele entwickelt. Es gibt viele Motoren da draußen, aber ich habe Angst, dass ich die Grundlagen der 3D-Entwicklung nicht lernen kann, da sie so hoch sind.Beginnen Sie mit einer Szene Grafik-Engine oder mit opengl direkt?

Sollte ich anfangen mit einer Szenengrafik-Engine, einer Bibliothek wie SDL zu programmieren oder direkt mit opengl arbeiten?

Ich mache alle Entwicklung auf Linux, aber ich will die Dinge, die ich entwickle, Cross-Plattform sein.

Antwort

3

Ich würde beginnen mit einfachen OpenGl gehen. Machen Sie einige grundlegende Szenen und beginnen Sie mit dem Aufbau Ihrer eigenen "3D-Engine" von dort. Es wird wahrscheinlich schlecht sein, da Sie lernen werden und eine Menge Low-Level-Sachen selbst manipulieren müssen. Ich denke jedoch, dass Sie das lernen wollen.

Erstellen Sie nicht zu komplexe Dinge, würde ich nur zu den Grundlagen gehen, und nach dem Mastering (ich beziehe mich auf Matrix-Manipulationen, Kamera, Kaugummi, Okklusion, etc.) sehen Sie sich einige 3D-Motoren, um zu sehen, wie sie implementiert es. Ich würde anfangen, sie zu dieser Zeit zu benutzen.

Sie benötigen ein einfaches Toolkit, um ein OpenGL-Canvas einzurichten. Ich empfehle GLUT, das ist alt und sehr einfach. Es wird Ihnen helfen, einen einfachen Bildschirm einzustellen. Eine niedrigere Stufe als diese wird nicht portierbar sein, und es wird ein wenig mühsam sein, sie zu erzeugen (Xorg-Aufrufe? Seufz ...). Viele Toolkit-Bibliotheken haben 3D-Canvas (QT, SDL, etc.). Aber der gute Punkt von GLUT ist, dass es nur Ihr Fenster erstellt, einige Funktionen aufbaut und das war's.

Eine sehr schöne 3D-Engine, die Sie nach den Grundlagen von OpenGL betrachten sollten, ist Ogre. Es ist gut programmiert und einfach zu bedienen.

+0

obwohl ich auf die Verwendung von Singletons ablehne, die über Ogre existieren, sowie alle Konfigurationsdateien und Plugins müssen alles tun. : - \ Aber ich stimme dem mit OpenGL zu. – Ricket

+0

@Ricket Ja, ich stimme dir zu. Es ist jedoch eine 3D-Engine, nicht mehr und nicht weniger. Deshalb mag ich es zum Lernen. Es war nur ein Vorschlag, es gibt andere Motoren, die den Job auch gut machen könnten. –

2

Ich begann mit OpenGL. Es gibt viele Tutorials im Internet verfügbar, die neben OpenGL per se, auch ermöglichen Ihnen, viele wichtige Dinge in der Entwicklung von 3D (Spiel) zu lernen, wie entsprechende Szenenbeleuchtung und Animation Grundlagen.

2

Die Grundlagen der 3D-Entwicklung in Bezug auf direkten OpenGL-Zugang sind ein sich schnell änderndes Ziel. Bereiten Sie sich darauf vor, sich alle paar Monate über neue Funktionen informieren zu müssen. Nach Jahren der Stagnation wurden im letzten Jahr drei OpenGL-Standards veröffentlicht, von denen jede wichtige Änderungen mit sich bringt. Dies kann erfreulich sein, aber es ist sehr mühsam zu folgen.

Wenn Sie nur schauen möchten, wie es lange gedauert hat, gehen Sie zur OpenGL 2.0-Spezifikation. Es ist hier zu bleiben, zumindest für ein paar Jahre. OpenGL 3.0 führt alle Änderungen in einem separaten Kontext ein und NVIDIA hat sich verpflichtet, alte Features nicht zu löschen. Sie werden nicht wettbewerbsfähig sein, aber Sie haben eine stabile Plattform für Ihre Freizeit.

Wenn Sie OpenGL als Mittel zum Zweck betrachten, bevorzugen Sie vielleicht Bibliotheken auf höherer Ebene, die all die schmutzige Arbeit für Sie erledigen. Die "anderen" Grundlagen der 3D-Grafik, nämlich Vektoren, Matrizen, Quaternionen (usw.), erscheinen auch auf dieser Ebene. Sie müssen einfach nicht wissen, wie Sie sie effizient an die GPU weitergeben. Wenn Sie sich für eine höhere 3D-Grafik entscheiden, können Sie sich auf die Dinge konzentrieren, die über alle APIs (OpenGL, OpenGL ES, Direct3D) und Technologien (Scanline-Rasterisierung, Raytracing) gleich bleiben.

Am Ende entscheiden Sie selbst, was Sie mit Ihrer Freizeit machen möchten. Beide Wege sind interessant, es gibt keinen angeborenen "besseren" Weg, wenn es kein festes Ziel gibt.

+0

Danke für die Antwort. Ich schätze es ist dasselbe wie bei den meisten modernen Softwaretechnologien. Es braucht viel Zeit, um mitzuhalten, aber es macht Spaß, es zu versuchen. –

0

kann ich Sie Open und C++

oder vielleicht Delta3D vorschlagen. es ist eine Open basierte Bibliothek

auch Ogre ist, aber ich es nicht verwenden ..