Simplistic 3D graphics renderer implemented in C++ and OpenGL 3.3 API
Current project state: core functionality is implemented, awaiting further feature extension (in development)
Credits:
"Grey Knight" by LamedeFeu, "DNA" by Holoxica. (more at the end of the readme)
- Windows 64-bit operating system
- Windows SDK 8.0 or newer
- Visual Studio Community 2015 or newer
- OpenGL 3.3 compatible video adapter
Build application with your Visual Studio IDE using soluton file gfxren.sln
For an IDE agnostic build use buildnrun.bat
, release only (msbuild
path has to be set)
W, A, S, D
- Moves camera forwards, to the left, backwards and to the right respectively
Spacebar
- Moves camera upwards
F
- Toggle borderless fullscreen mode
G
- Toggle GUI
Mouse left button
- Camera control
Mouse right button
- Toggle cursor and camera mode
Mouse scroll
- Zoom in/out
- Keyboard and mouse input
- Scene camera
- Construction of primitive models (geometric shapes)
- Support for model transformations in 3D space
- Shader building and interaction system
- Logging system and other utility features
Directory | Information |
---|---|
asset |
Functionality necessary for importing textures, constructing meshes and models. Model 3D transformations. |
context |
Provides application's front-end with components, needed to create window and rendering context. Interacts with operating system/window-specific stuff. |
gpudata |
Components allowing data transition between system and GPU memory. Data buffer creation. Data upload and description. |
input |
Keyboard and mouse input handling. Key binding. |
rendering |
Contains component responsible for drawing graphics and interaction with shader programs. |
scene |
Provides transformations for camera-like behaviour. |
shader |
Shader program compilation and linkage. Provides interface between C++ and GLSL programs. |
util |
Logging, exception handling etc. |
Nearest future
- Implement model import feature (implemented)
- GUI (implemented)
- Lighting and antialiasing (partially implemented)
Long-term perspective
- Basic physics
- Software ray-tracing
- Skeletal animations
Credits to the authors of the assets used in this project
"Grey Knight" (https://sketchfab.com/3d-models/grey-knight-0885c00ffa75478e9c6abe6b0370d285) by LamedeFeu (https://sketchfab.com/lamedefeu) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
"DNA" (https://sketchfab.com/3d-models/dna-60e95170b37549e3b45ee490b74bb112) by Holoxica (https://sketchfab.com/holoxica) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)