[2] The Background
The Background
One of the most fascinating areas of programming, in my opinion, is undoubtedly game development. Game development combines technology, creativity, and imagination into an interactive form of entertainment. In my free time, I enjoy engaging in game development as well as exploring the tools required for it.
Then there's the topic of developing one's own 3D engine. At some point, I too became entranced by the mythos of 3D engine development. Developing a 3D engine requires solving complex problems and demands a deep understanding of graphics technologies, rendering algorithms, physics simulations, and much more. For this reason, in 2002, I began programming a 2D engine for study purposes using DirectX7.
My 2D engine provided a user-friendly solution for developing DirectX7-based applications without requiring extensive knowledge of DirectX or the Windows operating system. Its main features included straightforward initialization of DirectX, the ability to create windowed or fullscreen applications, and effortless integration and display of bitmaps. Additionally, the engine offered pixel-perfect collision detection and specialized memory management for graphics and sounds. Overall, the 2D engine provided an accessible platform for developers to create graphical applications without prior knowledge of Windows or DirectX.
Several years later, when DirectX9 was already in existence, I decided to extend the idea of the 2D version into the 3D world. The new engine inherited numerous concepts from the project and enhanced and improved the internal processing and management of objects. The operation was simplified, allowing for easy implementation of basic rendering functions for primitives up to the implementation of DirectX lighting and multi-texturing. The engine also facilitated easy positioning, rotation, and scaling of 3D objects, as well as control over lighting and camera. Basic knowledge in C was sufficient to utilize the engine.
The version described in this text is based on DirectX11 and is programmed in C/C++. I hope you enjoy reading it, and I look forward to your feedback.
Die Vorgeschichte
Eines der faszinierendsten Gebiete der Programmierung ist meiner Meinung nach zweifelsohne die Entwicklung von Spielen. Die Spieleentwicklung vereint Technik, Kreativität und Fantasie zu einer interaktiven Form der Unterhaltung. In meiner Freizeit beschäftige ich mich gerne mit der Entwicklung von Spielen sowie mit den Werkzeugen, die dafür benötigt werden.
Dann ist da noch das Thema mit der Entwicklung einer eigenen 3D Engine. Irgendwann bin ich auch dem Mythos der Entwicklung von 3D-Engines verfallen. Bei der Entwicklung einer 3D-Engine müssen komplexe Probleme gelöst werden, und es erfordert ein tiefes Verständnis von Grafiktechnologien, Rendering-Algorithmen, Physiksimulationen und vielem mehr. Aus diesem Grund begann ich 2002 zu Studienzwecken mit der Programmierung einer 2D-Engine unter Verwendung von DirectX7.
Meine 2D-Engine bot eine benutzerfreundliche Lösung für die Entwicklung von DirectX7-basierten Anwendungen, ohne dass umfangreiche Kenntnisse über DirectX oder das Windows-Betriebssystem notwendig waren. Zu ihren Hauptmerkmalen gehörten eine unkomplizierte Initialisierung von DirectX, die Fähigkeit zur Erstellung von Fenster- oder Vollbildanwendungen sowie die mühelose Integration und Darstellung von Bitmaps. Zusätzlich bot die Engine eine pixelgenaue Kollisionsabfrage und eine spezielle Speicherverwaltung für Grafiken und Sounds. Insgesamt stellte die 2D-Engine eine zugängliche Plattform dar, die es Entwicklern ermöglichte, grafische Anwendungen ohne Vorkenntnisse in Windows oder DirectX zu erstellen.
Einige Jahre später, als bereits die DirectX9-Version existierte, entschied ich mich dafür, die Idee der 2D-Version auf die 3D-Welt zu übertragen. Die neue Engine übernahm zahlreiche Konzepte aus dem Projekt und erweiterte sowie verbesserte die interne Verarbeitung und Verwaltung von Objekten. Die Bedienung wurde vereinfacht, und man konnte einfach grundlegende Rendering-Funktionen für Primitive bis hin zur Implementierung von DirectX-Licht und Multi-Texturierung umsetzen. Die Engine ermöglichte außerdem das einfache Positionieren, Rotieren und Skalieren von 3D-Objekten sowie die Steuerung von Licht und Kamera. Grundlegende Kenntnisse in C reichten aus, um die Engine zu nutzen.
Die Version die in diesem Text beschrieben wird basiert auf DirectX11 und wird in C/C++ programmiert. Ich wünsche allen Interessierten viel Spaß beim Lesen und freue mich über Feedback von euch.
oyname 3D Engine
Implementation of a DirectX11 based 3D engine in C++
More posts
- 1 ‐ Getting StartedApr 25, 2024
- [13] Creating TexturesApr 25, 2024
- [12] With light, it becomes more beautifulApr 25, 2024
- [11] Not so simple after allApr 25, 2024
- [10] There must be something movingApr 25, 2024
- [9] The Object ManagerMar 30, 2024
- [8] Some considerations on renderingMar 30, 2024
- [7] We need a deviceMar 30, 2024
- [6] System Information Capture in DetailMar 30, 2024
- [5] System Information GatheringMar 30, 2024
Leave a comment
Log in with itch.io to leave a comment.