light/modules/engine/include/engine/platform/graphics/directx/buffers.hpp

80 lines
1.4 KiB
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
#include <d3d11.h>
2025-07-05 13:28:41 +03:30
#include <engine/base/base.hpp>
#include <engine/graphics/buffers.hpp>
2022-03-08 21:19:19 +03:30
#include <wrl.h>
namespace Light {
class dxSharedContext;
//========== CONSTANT_BUFFER ==========//
class dxConstantBuffer: public ConstantBuffer
{
private:
Ref<dxSharedContext> m_Context;
Microsoft::WRL::ComPtr<ID3D11Buffer> m_Buffer;
D3D11_MAPPED_SUBRESOURCE m_Map;
unsigned int m_Index;
public:
2025-07-05 13:28:41 +03:30
dxConstantBuffer(
ConstantBufferIndex index,
unsigned int size,
Ref<dxSharedContext> sharedContext
);
2022-03-08 21:19:19 +03:30
void Bind() override;
2025-07-05 13:28:41 +03:30
void *Map() override;
2022-03-08 21:19:19 +03:30
void UnMap() override;
};
//========== VERTEX_BUFFER ==========//
class dxVertexBuffer: public VertexBuffer
{
private:
Ref<dxSharedContext> m_Context;
Microsoft::WRL::ComPtr<ID3D11Buffer> m_Buffer;
D3D11_MAPPED_SUBRESOURCE m_Map;
unsigned int m_Stride;
public:
2025-07-05 13:28:41 +03:30
dxVertexBuffer(
float *vertices,
unsigned int stride,
unsigned int count,
Ref<dxSharedContext> sharedContext
);
2022-03-08 21:19:19 +03:30
~dxVertexBuffer();
void Bind() override;
void UnBind() override;
2025-07-05 13:28:41 +03:30
void *Map() override;
2022-03-08 21:19:19 +03:30
void UnMap() override;
};
//========== INDEX_BUFFER ==========//
class dxIndexBuffer: public IndexBuffer
{
private:
Ref<dxSharedContext> m_Context;
Microsoft::WRL::ComPtr<ID3D11Buffer> m_Buffer;
public:
2025-07-05 13:28:41 +03:30
dxIndexBuffer(unsigned int *indices, unsigned int count, Ref<dxSharedContext> sharedContext);
2022-03-08 21:19:19 +03:30
~dxIndexBuffer();
void Bind() override;
void UnBind() override;
};
2025-07-05 13:28:41 +03:30
} // namespace Light