DX12GraphicsApi.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #pragma once
  2. #include "DX12Buffer.h"
  3. #include "GraphicsApi.h"
  4. //! DirectX 12 Types
  5. struct ID3D12Debug;
  6. struct ID3D12Device5;
  7. struct ID3D12InfoQueue;
  8. struct ID3D12CommandQueue;
  9. struct IDXGISwapChain4;
  10. struct ID3D12DescriptorHeap;
  11. struct ID3D12Resource;
  12. struct ID3D12CommandAllocator;
  13. struct ID3D12Fence;
  14. struct D3D12_VIEWPORT;
  15. struct D3D12_VERTEX_BUFFER_VIEW;
  16. struct D3D12_INDEX_BUFFER_VIEW;
  17. struct ID3D12RootSignature;
  18. struct ID3D12PipelineState;
  19. struct ID3D12GraphicsCommandList4;
  20. namespace Framework
  21. {
  22. class DX12Buffer;
  23. class DX12DirectCommandQueue;
  24. class DX12CopyCommandQueue;
  25. class DX12ComputeCommandQueue;
  26. class DX12PixelShader;
  27. class DX12VertexShader;
  28. class DX12VertexBuffer;
  29. class DX12IndexBuffer;
  30. class DX12BLASModel;
  31. class TextureList;
  32. class TextureModel;
  33. class DirectX12 : public GraphicsApi
  34. {
  35. private:
  36. ID3D12Debug* debug;
  37. ID3D12Device5* device;
  38. ID3D12InfoQueue* infoQueue;
  39. DX12DirectCommandQueue* directCommandQueue;
  40. DX12CopyCommandQueue* copyCommandQueue;
  41. DX12ComputeCommandQueue* computeCommandQueue;
  42. IDXGISwapChain4* swapChain;
  43. ID3D12DescriptorHeap* rtvHeap;
  44. ID3D12DescriptorHeap* dsvHeap;
  45. ID3D12DescriptorHeap* shaderBufferHeap;
  46. ID3D12Resource* depthBuffer;
  47. ID3D12Resource* backBuffer[2];
  48. int backBufferIndex;
  49. int tearing;
  50. D3D12_VIEWPORT* viewPort;
  51. tagRECT* allowedRenderArea;
  52. D3D12_VERTEX_BUFFER_VIEW* vertexBufferView;
  53. D3D12_INDEX_BUFFER_VIEW* indexBufferView;
  54. ID3D12RootSignature* signature;
  55. ID3D12PipelineState* pipeline;
  56. Mat4<float> matrixBuffer[MAX_KNOCHEN_ANZ];
  57. Mat4<float> viewAndProj[2];
  58. Vec3<float> kamPos;
  59. TextureModel* texturModel;
  60. Texture* uiTexture;
  61. TextureList* texturRegister;
  62. DX12VertexShader* vertexShader;
  63. DX12PixelShader* pixelShader;
  64. DX12BLASModel** blasModels;
  65. DX12Buffer* blasScratchBuffer;
  66. DX12Buffer* blasResultBuffer;
  67. int lastModelId;
  68. DLLEXPORT void updateBottomLevelAccelerationStructure();
  69. public:
  70. DLLEXPORT DirectX12();
  71. DLLEXPORT ~DirectX12();
  72. DLLEXPORT void initialize(NativeWindow* fenster,
  73. Vec2<int> backBufferSize,
  74. bool fullScreen) override;
  75. DLLEXPORT void beginFrame(
  76. bool fill2D, bool fill3D, int fillColor) override;
  77. DLLEXPORT void renderKamera(Cam3D* zKamera) override;
  78. DLLEXPORT virtual void renderKamera(
  79. Cam3D* zKamera, Texture* zTarget) override;
  80. //! TODO: DLLEXPORT void renderKamera( Cam3D* zKamera, Texture* zTarget
  81. //! ) override;
  82. DLLEXPORT void presentFrame() override;
  83. DLLEXPORT Texture* createOrGetTexture(
  84. const char* name, Image* b) override;
  85. DLLEXPORT Image* zUIRenderImage() const override;
  86. DLLEXPORT virtual DXBuffer* createStructuredBuffer(int eSize) override;
  87. DLLEXPORT static bool isAvailable();
  88. };
  89. } // namespace Framework