I made the initial commit of the ZFX-Community-Engine version 2. It conatins the new basic architecture of the ZFXCE2. It is really simple and use the following layering:
- ApplicationApplication depends on the RenderSystem, the RenderSystem depends on the Infrastructure.
The Infrastructure layer:
The core layer, which offers basic services like logging, IO, event-handling, operation-system relevant stuff like accessing a windows system, timers, threading. Currently a windows-specific implementation is supported.
To offer an easy way to use the engine I will integrate a lua-interpreter at first.
The RenderSystem layer:
The layer which works with the graphic API. I am planning to use a rendering thread, which will be implemented by using the driver pattern. The user uses a render-client to define what should be rendered. The driver itself implements the access to the used render-api like OpenGL or D3Dx. I am not sure which communication-style between client and driver will work.
At this moment I just plan to define a command buffer, which will be filled / modified by the client with the rendering commands. After finishing the current frame the command-buffer will be updated by the driver itself and the new frame will be rendered. On each frame only the dynamic stuff will be changed.
I will also place here the scenegraph. Assets will be imported by using the asset-importer-library.
The Application layer:
This layer is the layer used by a user of the engine. It offers a base layer to configure, startupo and shotdown and accessing your assets and entities used for rendering.
The initial commint contains a base version with the render window, which is currently empty with a black background. You can close it by pressing ESC or just closing the window by pressing the close-button. You see: The event-system works already. And I started my work on implementing a D3D9-renderer. Currently I am playing around how to implement the client / driver-concept for multithreaded rendering.
I also added a first sample application called ModelViewer. It implements a first test of the architecture and it seems to work :-). You can find the code here: ZFXCE2 at SF .