Wie fange ich in C++ mit 3D-Programmierung an?

7 Antworten

Wenn es dir vor allem um einen Einstieg in die Spieleprogrammierung mit OpenGL oder DirectX geht (also nicht unbedingt um C++), würde ich dir raten, diese Schnittstellen besser nicht direkt zu nutzen, sondern über ein Framework, welches dir jede Menge Arbeit abnehmen kann, denn: Je höher das API, desto leichter wirst du einen Einstieg finden ohne völlig frustiert gleich wieder aufzugeben.

DirectX ist eine API für multimediale Anwendungen (hauptsächlich Spiele) für Windows (PC, Xbox etc.). Die Hauptaufgabe liegt dabei bei der Darstellung von 2D und 3D Grafiken (DirectX Graphics), zusätzlich werden aber auch Audio und Netzwerkschnittstellen angeboten. DirectX bietet quasi direkten Zugriff auf die Funktionen der Hardware (z.B. Grafikkarte). 

OpenGL ist das plattform-unabhängige, quelloffene Pendant von DirectX Graphics, also wieder eine API welche Zugriff auf Funktionen der Grafikkarte gewährt. OpenGL wurde mittlerweile von Vulcan abgelöst. 

Beide APIs werden meist nicht direkt, sondern über einen Wrapper in Form eines Frameworks oder einer Engine genutzt.

Eines dieser Frameworks ist LibGDX, welches auf OpenGL aufbaut: https://libgdx.badlogicgames.com/documentation/

Es gibt dazu auch sehr hilfreiche Bücher: https://libgdx.badlogicgames.com/documentation/help/Documentation.html

Wenn dich statt OpenGL eher Vulcan interessiert, fang an zu lesen auf Seite https://arstechnica.com/gadgets/2015/03/khronos-unveils-vulkan-opengl-built-for-modern-systems/ .

Due API von OpenGL sollte hinlänglich dokumentiert sein. Allerdings solltest Du in Linearer Algebra etc. sattelfest sein.

Wie es bei DX aussieht, kann ich nicht sagen.

Wieso machst du nicht weiter mit Java? Nur, weil du vielleicht keine anderen Möglichkeiten, außer Swing kennst (wobei Swing eh nicht für die Spieleprogrammierung konzeptioniert wurde)?

Für 3D-Spiele gibt es Tools wie libGDX, LWJGL, jPCT oder die jMonkeyEngine, die einen Port zu OpenGL oder teils sogar Vulcan haben. Eine weitere Alternative wäre JOGL, ein OpenGL-Binding für Java.

Ich habe vor kurzem angefangen C++ zu lernen (...) und würde gerne wissen wie ich anfangen soll (...) mit (...)

Zu einem nach dem anderen, würde ich erst einmal raten. Bei aller Erfahrung die du mit Java gesammelt haben magst - C++ bringt nochmal einige neue Themen und Aspekte der Programmierung ein, die nicht unterschätzt werden dürfen. Sicherlich lassen sich so manche Grundlagen nun einfacher lernen, doch bevor du sie nicht wirklich alle zusammen hast, solltest du dich nicht blindlings auf Schnittstellen wie OpenGL oder DirectX stürzen. Nimm dir Zeit.

Zudem würde ich wohl ein Toolset verwenden, welches den Umgang mit OpenGL oder DirectX nochmals abstrahiert / vereinfacht. Genügend Tools gibt es da (SFML, SDL, Qt, ...) und es ist nicht schwer, weitere zu finden. Das gilt ebenso für Lernquellen. Es gibt zahlreiche Bücher zu den Themen DirectX oder OpenGL, auch in direktem Zusammenhang mit C++ und der Spieleprogrammierung (s. Amazon). Online findest du einiges an Dokumentationsmaterial und Tutorials.

Etwas fernab der Programmierung und näher fokusiert auf die Logik, könnte übrigens dieses Buch (Mathematics for 3D Game Programming and Computer Graphics) für dich ziemlich interessant sein. Möglicherweise lässt es sich auch in einer Bibliothek oder in Auszügen im Internet finden.

Eine einfache Option für den Einstieg mit 3D-Programmierung mit C++ könnte zudem das openFrameworks-Toolkit sein.

Wenn es darum geht Spiele zu programmieren, dann wäre die Unreal Engine 4 vielleicht eine Möglichkeit. Sie verwendet C++ als Programmiersprache. Die Unreal Engine 4 ist relativ gut dokumentiert und hat einige Tutorials zum Thema Programmieren mit C++.

https://docs.unrealengine.com/en-us/

Kryonos 
Fragesteller
 04.07.2018, 23:58

Erstmal danke für deine Antwort. Ich finde UE nicht so interessant, ich hätte eher Interesse daran selbst etwas in Richtung Engine zu programmieren. Ich wäre sehr an OpenGL oder DirectX interessiert, habe dazu aber keine guten C++ Tutorials gefunden.

0

Nimm einfach opengl, dx ist fuer anfaenger unnoetig schwierig, und nicht platform unabhaengig. Wen dir dan irgendwann opengl nicht mehr ausreicht, kannste auf Vulkan umsteigen.