raSystem  1.0 bata
raCSRessource.cpp
Go to the documentation of this file.
1 #include "..\include\raMain.h"
2 
3 namespace System
4 {
5  raCSRessource::raCSRessource(raDirectX *dx, LPCSTR ShaderFileName, LPCSTR FunctionName) :
6  raComputeShaderObject(dx, ShaderFileName, FunctionName)
7  {
8  m_pResource = NULL;
9  m_pView = NULL;
10  }
11 
13  {
16  }
17  //-----------------------------------------
19  LPCSTR ShaderFileName,
20  LPCSTR FunctionName,
21  const raFloat* pData,
22  UINT numElements) : raCSRessource(dx, ShaderFileName, FunctionName)
23  {
24  m_pData = pData;
25  m_numElements = numElements;
26  }
28  {
30 
31  D3D11_TEXTURE1D_DESC texDesc;
32  texDesc.Width = m_numElements;
33  texDesc.MipLevels = 1;
34  texDesc.Format = DXGI_FORMAT_R32_FLOAT;
35  texDesc.Usage = D3D11_USAGE_DEFAULT;
36  texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
37  texDesc.CPUAccessFlags = 0;
38  texDesc.MiscFlags = 0;
39  texDesc.ArraySize = 1;
40 
41  D3D11_SUBRESOURCE_DATA InitData;
42  InitData.pSysMem = (float*)m_pData;
43  InitData.SysMemPitch = sizeof(float);
44  InitData.SysMemSlicePitch = sizeof(float);
45 
46  HRESULT hr = m_dx->GetDevice()->CreateTexture1D(&texDesc, &InitData,
47  (ID3D11Texture1D**)&m_pResource);
48 
49  if(FAILED(hr))
50  {
51  RERROR_DX11("CreateTexture1D", hr);
52  return false;
53  }
54  D3D11_SHADER_RESOURCE_VIEW_DESC viewDesc;
55  memset(&viewDesc, 0, sizeof(viewDesc));
56  viewDesc.Format = texDesc.Format;
57  viewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE1D;
58  viewDesc.Texture2D.MipLevels = texDesc.MipLevels;
59 
60  hr = m_dx->GetDevice()->CreateShaderResourceView(m_pResource, &viewDesc,
61  (ID3D11ShaderResourceView **)&m_pView);
62 
63  if(FAILED(hr))
64  {
65  RERROR_DX11("CreateShaderResourceView", hr);
66  return false;
67  }
68 
69  return true;
70  }
72  {
74  m_numElements = NULL;
75  }
76  bool raCSRessourceTexture1D::RunCS(UINT ThreadGroupCountX,
77  UINT ThreadGroupCountY,
78  UINT ThreadGroupCountZ)
79  {
80  ID3D11ShaderResourceView* aViews[1] = { (ID3D11ShaderResourceView*) m_pView };
81  m_dx->GetImmediateContext()->CSSetShaderResources(0, 1, aViews);
82 
83  raCSRessource::RunCS(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
84 
85  ID3D11ShaderResourceView* ppViewNULL[1] = { NULL };
86  m_dx->GetImmediateContext()->CSSetShaderResources( 0, 1, ppViewNULL );
87 
88  return true;
89  }
90 };
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
virtual void Destroy()
float raFloat
Definition: raMain.h:106
virtual bool RunCS(UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ)
const raFloat * m_pData
Definition: raCSRessource.h:29
raCSRessource(raDirectX *dx, LPCSTR ShaderFileName, LPCSTR FunctionName)
ID3D11Buffer D3D11_BUFFER_DESC void * pData
Definition: raSDKmesh.h:238
raCSRessourceTexture1D(raDirectX *dx, LPCSTR ShaderFileName, LPCSTR FunctionName, const raFloat *pData, UINT numElements)
virtual ~raCSRessource(void)
#define SAFE_RELEASE(p)
Definition: d3dxGlobal.h:22
ID3D11View * m_pView
Definition: raCSRessource.h:13
#define SAFE_DELETE(p)
Definition: d3dxGlobal.h:26
ID3D11Resource * m_pResource
Definition: raCSRessource.h:12
virtual bool RunCS(UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ)