Hey,
I'm looking at D right now because I find it much easier to create native applications as opposed to C++.
I have the following project structure:
- main.d (Booting)
- client.d
- Renderer.d
- Manager
- SDL2.d
- GLFW.d
- RenderingTargets
- DirectX.d
- Vulkan.d
- OpenGL.d
A new client instance is created in main.d. This will later serve as the “main game” instance.
A new instance of Renderer.d is created here. This contains the window manager (e.g. via SDL2
or GLFW
) and the respective rendering engine (Vulkan
, DirectX
, OpenGL
, etc.).
However, as soon as I initialize the window in SDL2.d and then want to render it, the whole thing blocks the client.
The RenderingTarget must create SDL2
or GLFW
as an instance here, as there are differences between the individual graphics interfaces and GLFW
, for example, does not support DirectX.
How can I implement the whole thing thread-based so that the client functions are executed as soon as SDL2
blocks the application?