Engine
-
Wie programmiert man eigentlich eine Engine???
Ich kann mir das irgendwie gar nicht vorstellen...
-
Eine Engine kapselt nur die Funktionen und Datenstrukturen für eine API (zB DirectX, OpenGL). Zum Beispiel könnte die Engine das Initialisieren von Direct3D vereinfachen, indem es eine Funktion (zb "Init") zur Verfügung stellt. Diese Funktion erstellt ein Fenster, füllt alle Datenstrukturen, erzeugt alle nötigen Schnittstellen usw. Eine Engine könnte auch ein eigenes Modellformat zur Verfügung stellen und das Rendern erleichtern. Bei der Tribase-Engine wird es auch so gemacht. Du gibst einfach einen Dateinamen zum Laden an und renderst auch nur mit einem Aufruf der Funktion "Render". Die Engine verwaltet dann alle Effekte, Vertizes, Indizes, Texturen usw. ohne, dass man sich Gedanken darüber machen muss...
Ich empfehle dir das Buch "3D-Spieleprogrammierung mit DirectX 9 und C++" von David Scherfgen, falls du mit DirectX arbeitest bzw. arbeiten willst. Das Buch behandelt die Grundlagen von DirectX und anschließend wird die Tribase-Engine entwickelt...
-
Wenn du dich aber mehr über die Programmierung einer Engine interessierst, dann kann ich dir ds Buch absolut nicht empfehlen.
Dann eher:
http://www.amazon.de/gp/product/0471123269/028-2741003-4638943?v=glance&n=52044011
oder
-
Hi,
also ein Buch von 1995 zu empfehlen halte ich für eher fragwürdig. Wenn man erstmal seitenweise lernt wie man den Grafikmodus seiner Grafikkarte unter DOS einstellt. Wenn man unbedingt auf moderne APIs verzichten und seine eigene Engine unter C schreiben will, dann sollte man auf den LaMothe Volume 2 zurückgreifen. Der versucht wenigstens halbwegs aktuelle Techniken in seine C++ Engine einzubinden.
http://www.amazon.de/gp/product/0672318350/302-7873532-7556831?v=glance&n=52044011
Wenn man aber die Hardwarebeschleunigung ausnutzen möchte dann sollte man von eigenen Software-Implementierungen Abstand halten. Eine moderne Engine kapselt DirectX oder OpenGL:
http://www.amazon.de/gp/product/3939013021/302-7873532-7556831?v=glance&n=299956&s=gateway&v=glance
http://www.amazon.de/gp/product/012229064X/302-7873532-7556831?v=glance&n=52044011
http://www.amazon.de/gp/product/1590590813/302-7873532-7556831?v=glance&n=52044011&v=glance
Ciao,
Stefan