Files
2025-05-13 02:46:21 +03:00

61 lines
1.4 KiB
C++

#ifndef IConstantBuffer11_h__
#define IConstantBuffer11_h__
#include "render/IConstantBuffer.h"
#include <d3d11.h>
#include <dxgi.h>
#include <d3dx11.h>
#include "Globals.h"
#include <log/CLog.h>
namespace LifeGraphics
{
class IConstantBuffer11 : public IConstantBuffer
{
public:
ID3D11Buffer* buffer;
ID3D11Device* device;
ID3D11DeviceContext* context;
int size;
D3D11_MAPPED_SUBRESOURCE subresource;
IConstantBuffer11(ID3D11Device* _device, int _size)
{
if((_size % 0x10) !=0 )
{
LOG_ERROR("Buffer size must be multiple of 16", "IConstantBuffer11", "ctor()");
return;
}
device = _device;
size = _size;
D3D11_BUFFER_DESC desc = {0};
desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
desc.ByteWidth = _size;
desc.Usage = D3D11_USAGE_DYNAMIC;
HRESULT hr = device->CreateBuffer(&desc,NULL, &buffer);
device->GetImmediateContext(&context);
/*
BufferDescription desc = new BufferDescription();
desc.BindFlags = BindFlags.ConstantBuffer;
desc.CpuAccessFlags = CpuAccessFlags.Write;
desc.OptionFlags = ResourceOptionFlags.None;
desc.SizeInBytes = size;
desc.StructureByteStride = 0;
desc.Usage = D3D11.ResourceUsage.Dynamic;
buffer = new D3D11.Buffer(device, desc);*/
}
~IConstantBuffer11()
{
SAFE_RELEASE(buffer);
context = NULL;
}
void Update(void* pData, int dataLength);
};
}
#endif // IConstantBuffer11_h__