CustomDX11API.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "CustomDX11API.h"
  2. #include <Shader.h>
  3. #include <DXBuffer.h>
  4. #include <d3d11.h>
  5. #include "CustomUIDX11PixelShader.h"
  6. #include "CustomUIDX11VertexShader.h"
  7. using namespace Framework;
  8. CustomDX11API::CustomDX11API()
  9. : DirectX11(),
  10. vertexShaderLightBufferIndex(-1)
  11. {}
  12. Framework::DX11VertexShader* CustomDX11API::initializeVertexShader(
  13. unsigned char* byteCode, int size)
  14. {
  15. DX11VertexShader* shader = DirectX11::initializeVertexShader(
  16. (unsigned char*)CustomUIDX11VertexShader,
  17. sizeof(CustomUIDX11VertexShader));
  18. vertexShaderLightBufferIndex = shader->getFirstUninitializedBufferIndex();
  19. shader->erstelleConstBuffer(20, vertexShaderLightBufferIndex);
  20. char buffer[8];
  21. *(int*)buffer = 0;
  22. *(float*)(buffer + 4) = 1.f;
  23. shader->füllConstBuffer(buffer, vertexShaderLightBufferIndex, 8);
  24. return shader;
  25. }
  26. Framework::DX11PixelShader* CustomDX11API::initializePixelShader(
  27. unsigned char* byteCode, int size)
  28. {
  29. DX11PixelShader* shader = DirectX11::initializePixelShader(
  30. (unsigned char*)CustomUIDX11PixelShader,
  31. sizeof(CustomUIDX11PixelShader));
  32. return shader;
  33. }
  34. void CustomDX11API::setVertexLightBuffer(Framework::DXBuffer* zBuffer)
  35. {
  36. DX11StructuredBuffer* buffer = dynamic_cast<DX11StructuredBuffer*>(zBuffer);
  37. if (buffer)
  38. {
  39. ID3D11ShaderResourceView* v[1];
  40. v[0] = *buffer;
  41. zContext()->VSSetShaderResources(0, 1, v);
  42. }
  43. }
  44. int CustomDX11API::getVertexShaderLightBufferIndex() const
  45. {
  46. return vertexShaderLightBufferIndex;
  47. }