61 lines
1.4 KiB
C++
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__
|