3D Game Engine with OpenGL
In my learning path of OpenGL, I decided to create my own 3D game engine called PixelGL using C++, GLFW and ImGui.
You can download the latest version of the engine from the github repository: https://github.com/carloscaz/PixelGL-3DEngine
Features of PixelGL
Material creation and texture loading
The engine has the feature to support different texture maps in the meshes, such as diffuse map, specular map and emissive map. There is also a material class that can be assigned to the different meshes to give a more realistic visualisation.
Real-time lighting
The engine has different types of light, such as a directional light to give the scene a global illumination, a point light to illuminate specific areas of the scene and a focal light to give a more focused illumination of an object.
Entity-Component System
In order to modularise the entities created in the engine in the best possible way, I opted for an architecture based on components that define the characteristics of the entities separately.
Viewport with ImGui Library
Another feature of the engine is the integration of OpenGL with the ImGui library to create a viewport and editor. Thanks to this editor, I can modify different properties of the entity components directly from the engine on the fly. The aim of this editor is to be able to graphically add the different engine options as they are created.
Mesh loading
The engine allows you to load any obj model using the TinyObjLoader library, read the textures defined in the file itself and create the corresponding material by associating these textures at the moment the model is loaded.