+-------------------+ +-------------------+ +---------------------+ | | | | | | | | | | | | +---------------------+ we need a second renderer for the | scene | | object | | static renderer ++ | | objects (1 renderer per scene => | | | | | || | renderer of | we can load/update the shader | | | | | +----------+ the objects' +----------+ once for all the objects - we +--------+----------+ +--------+----------+ +-----------+---------+ | scene | might have hundreds) | | | | | + | | +---------------------+ + it stores all the resources | | it will need responsible for loading, cleanup | | GL/VK backends storage | +-------------------------------------------------+ all the draw functions! | | it creates the objects using + + + the assimp nodes info contains: the static renderer stores all | (assigns mesh, material and +--+ * ptr to mesh (geometry) the information about the world | testures to objects) | * ptr to material (contains ptr to texture) +--+ and the static scenes | | ----------- | | | * transformation (Mat4) +-------+------+ (shaders, modelling, viewing, | +--------+-----+ | | camera transformations) | | | | Texture | | | Mesh | | | + | | | ++-----------+-+ | | +-+----------+-+ | | | | | | +---------+-+ +---+--------+ | | +------+-----+ +--+---------+ | | | | | | | | | | | TextureGL | | TextureVK | +---------+---------+ | MeshGL | | MeshVK | | | | | | | | | | +-----------+ +------------+ | +------------+ +------------+ | | | +------------+------------+ | | | shader/shader prog | | | +--+-----------------+----+ | | +---------------+----+ +----+------------+ | ShaderProgramGL | | ShaderProgramVK | +--------------------+ +-----------------+