-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDeviceBuffer.cpp
87 lines (67 loc) · 2.13 KB
/
DeviceBuffer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "StdAfx.h"
#include "DeviceBuffer.h"
#include "StimServer.h"
CDeviceBuffer::CDeviceBuffer(void)
: m_pDeviceBuffer(NULL)
{
// TRACE("CDeviceBuffer Konstruktor\n");
ZeroMemory(&m_BuffDesc, sizeof(D3D11_BUFFER_DESC));
}
CDeviceBuffer::~CDeviceBuffer(void)
{
if (m_pDeviceBuffer) m_pDeviceBuffer->Release(); // in case Init fails
// m_pDeviceBuffer = NULL;
TRACE("CDeviceBuffer Destruktor\n");
}
HRESULT CDeviceBuffer::Init(void* pBufferData, UINT sizeOfBuffer)
{
m_BuffDesc.ByteWidth = sizeOfBuffer;
TRACE("Byte Width of Buffer: %u\n", m_BuffDesc.ByteWidth);
D3D11_SUBRESOURCE_DATA InitData;
ZeroMemory( &InitData, sizeof(InitData) );
InitData.pSysMem = pBufferData;
InitData.SysMemPitch = 0;
InitData.SysMemSlicePitch = 0;
HRESULT hr = theApp.m_pD3Ddevice->CreateBuffer(&m_BuffDesc, &InitData, &m_pDeviceBuffer);
ASSERT(hr == S_OK);
return hr;
}
CDeviceConstBuffer::CDeviceConstBuffer(void)
{
this->CDeviceBuffer::CDeviceBuffer();
m_BuffDesc.Usage = D3D11_USAGE_DYNAMIC;
m_BuffDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
m_BuffDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
}
/*
CDeviceConstBuffer::~CDeviceConstBuffer(void)
{
if (m_pAnimationBuffer) m_pAnimationBuffer->Release();
m_pAnimationBuffer = NULL;
TRACE("CAnimationBuffer Destruktor\n");
}
*/
HRESULT CDeviceConstBuffer::Update(float animationPar[], unsigned char parSize)
{
D3D11_MAPPED_SUBRESOURCE mappedConstBuffer = {0};
HRESULT hr = theApp.m_pImmediateContext->Map(m_pDeviceBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedConstBuffer);
ASSERT(hr == S_OK);
float* pData = (float*) mappedConstBuffer.pData;
for (unsigned char i=0; i<parSize; i++) *pData++ = animationPar[i];
theApp.m_pImmediateContext->Unmap(m_pDeviceBuffer, 0);
return hr;
}
CDeviceVertexBuffer::CDeviceVertexBuffer(void)
{
// CDeviceBuffer::CDeviceBuffer();
this->CDeviceBuffer::CDeviceBuffer();
m_BuffDesc.Usage = D3D11_USAGE_DEFAULT;
m_BuffDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
m_BuffDesc.CPUAccessFlags = 0;
}
/*
CDeviceVertexBuffer::~CDeviceVertexBuffer(void)
{
CDeviceBuffer::~CDeviceBuffer();
}
*/