DiligentGraphics/DiligentCore

Add ResourceRegistry

Closed this issue · 0 comments

Currently post-processing techniques use simple array as resource cache. A more generic way is to add a ResourceRegistry class (ResourceCache would bee conflicting with other components).

The class can look something like this:

class ResourceRegistry
{
public:
    using ResourceIdType = Uint32;
    void Add(ResourceIdType Id, IDeviceObject* pObject);
    ITexture* GetTexture(ResourceIdType Id) const;
    ITexture* GetBuffer(ResourceIdType Id) const;
    ITextureView* GetTextureSRV(ResourceIdType Id) const;
    IBufferView* GetBufferSRV(ResourceIdType Id) const;
    // ...
};

You can add development checks to check type, e.g.

ITexture* ResourceRegistry::GetTexture(ResourceIdType Id) const;
{
    DEV_CHECK_ERR(RefCntAutoPtr<ITexture>{m_Resources[Id], IID_Texture}, "Resource is not a texture");
}