A DirectX 12 Rendering Engine
Originally a research project, EnDjinn is a 3d renderer built in the style of a video game engine with no concern for legacy graphics APIs.
PRs are welcome to add and extend the features of this engine. However, a goal of this project is to achieve understanding. Consequently, this repository will not take on other third party dependencies, licensed or non (except, perhaps, in a strictly temporary way).
Of course, since we leverage API’s like DX12 and Vulkan, and must run upon platforms like Windows, this restriction doesn’t include platform or hardware APIs and drivers.
Throw-based Error Handling - Prefer throw
and catch
to error codes. The Djn::Exception
class builds a stack trace when it is constructed to make this error handling more useful.
Smart pointers (almost) always - Simplify your code and make the application clean itself up when things go awry. This is also critical because we use throw
. If unique_ptr
or some other smart pointer doesn’t do what you need, I encourage you to create your own RAII-based NOTHROW smart pointer.
Enumerating Graphics Hardware Results…
Adapter: NVIDIA GeForce GTX 1080
Djinn Exception caught ————————————————
Sample exception
Stack Trace:
d:\aaron\dev\src\01solutions\endjinn\djinn\ debug.h:86 Djn::GetStackTrace
d:\aaron\dev\src\01solutions\endjinn\djinn\ debug.h:48 Djn::Exception
d:\aaron\dev\src\01solutions\endjinn\djinn\ gfx.cpp:108 Djn::Gfx
d:\aaron\dev\src\01solutions\endjinn\djinn\ gfx.h:30 Djn::Instance
d:\aaron\dev\src\01solutions\endjinn\djinn\ app.cpp:43 Djn::App
d:\aaron\dev\src\01solutions\endjinn\djinn\ djinn.cpp:22 WinMain
d:\agent_work\1\s\src\vctools\crt\vcstartup\src\startup\ exe_common.inl:107 invoke_main
d:\agent_work\1\s\src\vctools\crt\vcstartup\src\startup\ exe_common.inl:288 scrt_common_main_seh
d:\agent_work\1\s\src\vctools\crt\vcstartup\src\startup\ exe_common.inl:331 scrt_common_main
d:\agent_work\1\s\src\vctools\crt\vcstartup\src\startup\ exe_winmain.cpp:17 WinMainCRTStartup
Closing Djinn.
```