#ifndef IConstantBuffer11_h__ #define IConstantBuffer11_h__ #include "render/IConstantBuffer.h" #include #include #include #include "Globals.h" #include 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__