CmD3D11MultiRenderTexture.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "CmD3D11MultiRenderTexture.h"
  2. #include "CmD3D11DepthStencilBuffer.h"
  3. #include "CmD3D11Texture.h"
  4. #include "CmD3D11RenderTexture.h"
  5. namespace CamelotEngine
  6. {
  7. D3D11MultiRenderTexture::D3D11MultiRenderTexture()
  8. :MultiRenderTexture()
  9. {
  10. }
  11. D3D11MultiRenderTexture::~D3D11MultiRenderTexture()
  12. {
  13. }
  14. void D3D11MultiRenderTexture::setColorSurfaceImpl(UINT32 surfaceIdx, TexturePtr texture, UINT32 face, UINT32 numFaces, UINT32 mipLevel)
  15. {
  16. SAFE_RELEASE(mRenderTargetViews[surfaceIdx]);
  17. if(texture != nullptr)
  18. {
  19. mRenderTargetViews[surfaceIdx] = D3D11RenderTexture::createRenderTargetView(mSurfaces[surfaceIdx]);
  20. }
  21. }
  22. void D3D11MultiRenderTexture::setDepthStencilImpl(DepthStencilBufferPtr depthStencilBuffer)
  23. {
  24. }
  25. void D3D11MultiRenderTexture::getCustomAttribute(const String& name, void* pData)
  26. {
  27. if(name == "RTV")
  28. {
  29. ID3D11RenderTargetView** pRTVs = (ID3D11RenderTargetView **)pData;
  30. for(size_t x = 0; x < mRenderTargetViews.size(); ++x)
  31. pRTVs[x] = mRenderTargetViews[x];
  32. return;
  33. }
  34. else if(name == "DSV")
  35. {
  36. ID3D11DepthStencilView** pDSV = (ID3D11DepthStencilView **)pData;
  37. D3D11DepthStencilBuffer* d3d11depthStencilBuffer = static_cast<D3D11DepthStencilBuffer*>(mDepthStencilBuffer.get());
  38. *pDSV = d3d11depthStencilBuffer->getDepthStencilView();
  39. return;
  40. }
  41. }
  42. void D3D11MultiRenderTexture::initialize()
  43. {
  44. mRenderTargetViews.resize(CM_MAX_MULTIPLE_RENDER_TARGETS);
  45. }
  46. }