diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-11-24 00:07:34 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-11-24 00:07:34 +0000 |
| commit | 84d8fedc201a66835f5c234160bda63bbc40f682 (patch) | |
| tree | 6edc9cac7e76058a5e2b6f61804ab3a04e562e6f /Graphics/GraphicsEngineOpenGL | |
| parent | Fixed issue with resource state transition in D3D11 backend (diff) | |
| download | DiligentCore-84d8fedc201a66835f5c234160bda63bbc40f682.tar.gz DiligentCore-84d8fedc201a66835f5c234160bda63bbc40f682.zip | |
Added IShaderResourceBinding::InitializeStaticResources() method to allow explicit initialization of static shader resources in a SRB
Diffstat (limited to 'Graphics/GraphicsEngineOpenGL')
4 files changed, 11 insertions, 2 deletions
diff --git a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h index c6f54964..6e03df2e 100644 --- a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h @@ -50,7 +50,7 @@ public: virtual void BindShaderResources( IResourceMapping *pResourceMapping, Uint32 Flags )override final; - virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override final; + virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding, bool InitStaticResources )override final; virtual bool IsCompatibleWith(const IPipelineState *pPSO)const override final; diff --git a/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h index 6500ad29..02193dd9 100644 --- a/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h @@ -55,6 +55,8 @@ public: virtual IShaderVariable* GetVariable(SHADER_TYPE ShaderType, Uint32 Index)override final; + virtual void InitializeStaticResources(const IPipelineState* pPipelineState)override final; + GLProgramResources &GetProgramResources(SHADER_TYPE ShaderType, PipelineStateGLImpl *pdbgPSO); private: diff --git a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp index 19503efb..57c2e4a4 100644 --- a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp @@ -152,11 +152,13 @@ void PipelineStateGLImpl::BindShaderResources(IResourceMapping *pResourceMapping } } -void PipelineStateGLImpl::CreateShaderResourceBinding(IShaderResourceBinding **ppShaderResourceBinding) +void PipelineStateGLImpl::CreateShaderResourceBinding(IShaderResourceBinding **ppShaderResourceBinding, bool InitStaticResources) { auto *pRenderDeviceGL = ValidatedCast<RenderDeviceGLImpl>( GetDevice() ); auto &SRBAllocator = pRenderDeviceGL->GetSRBAllocator(); auto pResBinding = NEW_RC_OBJ( SRBAllocator, "ShaderResourceBindingGLImpl instance", ShaderResourceBindingGLImpl)(this); + if (InitStaticResources) + pResBinding->InitializeStaticResources(nullptr); pResBinding->QueryInterface(IID_ShaderResourceBinding, reinterpret_cast<IObject**>(ppShaderResourceBinding)); } diff --git a/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp index 4041afed..d6cae215 100644 --- a/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp @@ -113,4 +113,9 @@ GLProgramResources &ShaderResourceBindingGLImpl::GetProgramResources(SHADER_TYPE return m_DynamicProgResources[ShaderInd]; } +void ShaderResourceBindingGLImpl::InitializeStaticResources(const IPipelineState* pPipelineState) +{ + +} + } |
