`EngineCtx` is considered merely an access front-end now; After some analysis of existing code, it seems the RenderEnvironment is the most appropriate framework to configure the global engine services and thus to ''boot the Render Engine''. The access to the `EngineCtx` is tricky, because of the requirements * it will be dependency-injected into the internals of the Render Nodes * excessive indirection should be avioded; preferrably the actual code in the render pipeline sees a pointer (coded as language reference) which directly refers to the buffer and cache manager. * but on the other hand, we want configurability; simple tests shall access "the buffer manager" without much ado, while the actual render engine obviously has a life cycle and needs an administrative access to the various global implementation facilities * this both together implies some kind of ''virtual constructor'' * and since such a pattern can not be implemented in C++ with simple inheritance (because the base constructor does not "see" the actual implementation type at the time when it's invoked), the solution is to rely on a second indirection through our dependency-injection framework: thus the setup of the actual implementation is what can be configured flexibly, and overridden by mock implementation for some test cases
11 MiB
11 MiB
| The file is too large to be shown. |