summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngine
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-01-26 05:31:33 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-01-26 05:31:33 +0000
commitaff3c611e2cc82215a3f14e5dee0e8bd9c94a922 (patch)
treec9e71e2d516156a274f77b348850338e80def87d /Graphics/GraphicsEngine
parentUpdated shader resource variable C interface; added test (diff)
downloadDiligentCore-aff3c611e2cc82215a3f14e5dee0e8bd9c94a922.tar.gz
DiligentCore-aff3c611e2cc82215a3f14e5dee0e8bd9c94a922.zip
Fixed SRB c interface; added test.
Diffstat (limited to 'Graphics/GraphicsEngine')
-rw-r--r--Graphics/GraphicsEngine/interface/ShaderResourceBinding.h41
1 files changed, 26 insertions, 15 deletions
diff --git a/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h b/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h
index 212680b0..931855d1 100644
--- a/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h
+++ b/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h
@@ -121,29 +121,40 @@ class IPipelineState;
struct IShaderResourceBinding;
// clang-format off
-struct IShaderResourceBindingVtbl
+
+struct IShaderResourceBindingMethods
{
- class IPipelineState* (*GetPipelineState)();
- void (*BindResources)(Uint32 ShaderFlags, class IResourceMapping* pResMapping, Uint32 Flags);
- class IShaderResourceVariable* (*GetVariableByName)(SHADER_TYPE ShaderType, const char* Name);
- Uint32 (*GetVariableCount)(SHADER_TYPE ShaderType);
- class IShaderResourceVariable* (*GetVariableByIndex)(SHADER_TYPE ShaderType, Uint32 Index);
- void (*InitializeStaticResources)(const class IPipelineState* pPipelineState);
+ class IPipelineState* (*GetPipelineState) (struct IShaderResourceBinding*);
+ void (*BindResources) (struct IShaderResourceBinding*, Uint32 ShaderFlags, class IResourceMapping* pResMapping, Uint32 Flags);
+ class IShaderResourceVariable* (*GetVariableByName) (struct IShaderResourceBinding*, SHADER_TYPE ShaderType, const char* Name);
+ Uint32 (*GetVariableCount) (struct IShaderResourceBinding*, SHADER_TYPE ShaderType);
+ class IShaderResourceVariable* (*GetVariableByIndex) (struct IShaderResourceBinding*, SHADER_TYPE ShaderType, Uint32 Index);
+ void (*InitializeStaticResources)(struct IShaderResourceBinding*, const class IPipelineState* pPipelineState);
};
+
// clang-format on
+struct IShaderResourceBindingVtbl
+{
+ struct IObjectMethods Object;
+ struct IShaderResourceBindingMethods ShaderResourceBinding;
+};
+
struct IShaderResourceBinding
{
- struct IObjectVtbl* pObjectVtbl;
- struct IShaderResourceBinding* pShaderResourceBindingVtbl;
+ struct IShaderResourceBindingVtbl* pVtbl;
};
-# define IShaderResourceBinding_GetPipelineState(This) (This)->pShaderResourceBindingVtbl->GetPipelineState(This)
-# define IShaderResourceBinding_BindResources(This, ...) (This)->pShaderResourceBindingVtbl->BindResources(This, __VA_ARGS__)
-# define IShaderResourceBinding_GetVariableByName(This, ...) (This)->pShaderResourceBindingVtbl->GetVariableByName(This, __VA_ARGS__)
-# define IShaderResourceBinding_GetVariableCount(This, ...) (This)->pShaderResourceBindingVtbl->GetVariableCount(This, __VA_ARGS__)
-# define IShaderResourceBinding_GetVariableByIndex(This, ...) (This)->pShaderResourceBindingVtbl->GetVariableByIndex(This, __VA_ARGS__)
-# define IShaderResourceBinding_InitializeStaticResources(This, ...) (This)->pShaderResourceBindingVtbl->InitializeStaticResources(This, __VA_ARGS__)
+// clang-format off
+
+# define IShaderResourceBinding_GetPipelineState(This) (This)->pVtbl->ShaderResourceBinding.GetPipelineState ((struct IShaderResourceBinding*)(This))
+# define IShaderResourceBinding_BindResources(This, ...) (This)->pVtbl->ShaderResourceBinding.BindResources ((struct IShaderResourceBinding*)(This), __VA_ARGS__)
+# define IShaderResourceBinding_GetVariableByName(This, ...) (This)->pVtbl->ShaderResourceBinding.GetVariableByName ((struct IShaderResourceBinding*)(This), __VA_ARGS__)
+# define IShaderResourceBinding_GetVariableCount(This, ...) (This)->pVtbl->ShaderResourceBinding.GetVariableCount ((struct IShaderResourceBinding*)(This), __VA_ARGS__)
+# define IShaderResourceBinding_GetVariableByIndex(This, ...) (This)->pVtbl->ShaderResourceBinding.GetVariableByIndex ((struct IShaderResourceBinding*)(This), __VA_ARGS__)
+# define IShaderResourceBinding_InitializeStaticResources(This, ...) (This)->pVtbl->ShaderResourceBinding.InitializeStaticResources((struct IShaderResourceBinding*)(This), __VA_ARGS__)
+
+// clang-format on
#endif