This library aims to be a simple tool to let you visualise simple 3D primitives. To provide maximum flexibility the library is using ANGLE (https://github.com/google/angle) as graphics backend. C++ namespace - Simple3D. Currently there is no aim to support multiple windows, and contexts, but it might be provided in the future.
Code style - Google C++ Style Guide. (https://github.com/cpplint/cpplint)
- (graphics) Objects related to 3D rendering.
- (context) Window manager: creating windows, GLES contexts, main loop, etc.
- ImGui support (?)
- Texture manager
- Tools for optimizing visualisation of massive amounts of data.
- glad (https://github.com/Dav1dde/glad)
- GLFW (https://www.glfw.org/).
- ANGLE (https://github.com/google/angle)
- OpenGL Mathematics (GLM) (https://github.com/g-truc/glm)
- assimp (https://github.com/assimp/assimp)
- Dear ImGui (https://github.com/ocornut/imgui)
- stb_image (https://github.com/nothings/stb)
- Context can be initialized only once, otherwise you can expect undefined behaviour.
- Only one instance of shader per type. Makes shaders less flexible, but increases overall performance as it decreases switches between shader programs.
- Only one instance of renderer per scene. Couldn't come up with a good way to allow that, but also provide easy library interface.
- Create CMake config of library
- Organize components in folders.
- Create documentation (doxygen).
- Add support for non-desktop devices: Android, IOS.
- Create basic API/interface of library:
- Scene object (relative position of objects).
- Camera object (render capabilites).
- Misc (additional 3D primitives).
- Implement API/interface:
- Simple lighting.
- Scene object (relative position of objects).
- Camera object (render capabilites).
- Controls for Camera object.
- Misc (additional 3D primitives).
- 3D primitives:
- Cuboid.
- Triangle.
- Spehere: basic, icosphere, cubesphere.
- Particle.
- Initialization, and termination.
- Context management.
- Input management.
- Add ImGui support.
- Create simple model loading.
- Add support for embedded textures (assimp).
- Optimized ParticleRenderer.