raSystem  1.0 bata
raComputeShaderObject.cpp
Go to the documentation of this file.
1 #include "..\include\raMain.h"
2 
3 namespace System
4 {
6  LPCSTR ShaderFileName, LPCSTR FunctionName) : m_ShaderFileName(ShaderFileName),
7  m_FunctionName(FunctionName)
8  {
9  m_dx = dx;
10  m_pCS = NULL;
11  }
13  {
14  ID3DBlob* pCSBuf = NULL;
15  DWORD dwShaderFlags = D3D10_SHADER_ENABLE_STRICTNESS;
16 
17  HRESULT hr = D3DX11CompileFromFile(m_ShaderFileName, NULL, NULL, m_FunctionName, "cs_5_0",
18  dwShaderFlags, 0, NULL, &pCSBuf, NULL, NULL);
19 
20  if(FAILED(hr))
21  {
22  RERROR_DX11("D3DX11CompileFromFile", hr);
23  return false;
24  }
25 
26  hr = m_dx->GetDevice()->CreateComputeShader((DWORD*)pCSBuf->GetBufferPointer(),
27  pCSBuf->GetBufferSize(), NULL, &m_pCS);
28 
29  if(FAILED(hr))
30  {
31  RERROR_DX11("CreateComputeShader", hr);
32  return false;
33  }
34 
35  SAFE_RELEASE(pCSBuf);
36 
37  return true;
38  }
40  {
42  }
43  bool raComputeShaderObject::RunCS(UINT ThreadGroupCountX, UINT ThreadGroupCountY,
44  UINT ThreadGroupCountZ)
45  {
46  m_dx->GetImmediateContext()->CSSetShader(m_pCS, NULL, 0);
47  m_dx->GetImmediateContext()->Dispatch(ThreadGroupCountX, ThreadGroupCountY,
48  ThreadGroupCountZ);
49 
50  return true;
51  }
52 };
ID3D11DeviceContext * GetImmediateContext(void)
Definition: raDirectX.h:31
void RAPI RERROR_DX11(raString x, HRESULT h)
Definition: raMain.cpp:156
ID3D11Device * GetDevice(void)
Definition: raDirectX.h:29
ID3D11ComputeShader * m_pCS
virtual bool RunCS(UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ)
raComputeShaderObject(const GUID &raguid, raDirectX *dx, LPCSTR ShaderFileName, LPCSTR FunctionName)
#define SAFE_RELEASE(p)
Definition: d3dxGlobal.h:22