1#include "display_plane_class.h"
4display_plane_class::display_plane_class()
16display_plane_class::~display_plane_class()
20bool display_plane_class::Initialize(ID3D11Device* device,
float width,
float height)
22 Logger::Get().
Log(
"Initializing display_plane_class, width: " + std::to_string(width) +
", height: " + std::to_string(height), __FILE__, __LINE__, Logger::LogLevel::Initialize);
27 result = InitializeBuffers(device, width, height);
30 Logger::Get().
Log(
"Could not initialize buffers", __FILE__, __LINE__, Logger::LogLevel::Error);
38void display_plane_class::Shutdown()
47void display_plane_class::Render(ID3D11DeviceContext* deviceContext)
50 RenderBuffers(deviceContext);
56int display_plane_class::GetIndexCount()
61bool display_plane_class::InitializeBuffers(ID3D11Device* device,
float width,
float height)
63 Logger::Get().
Log(
"Initializing buffers", __FILE__, __LINE__, Logger::LogLevel::Initialize);
66 unsigned long* indices;
67 D3D11_BUFFER_DESC vertexBufferDesc, indexBufferDesc;
68 D3D11_SUBRESOURCE_DATA vertexData, indexData;
77 m_indexCount = m_vertexCount;
80 vertices =
new VertexType[m_vertexCount];
83 indices =
new unsigned long[m_indexCount];
87 vertices[0].position = XMFLOAT3(-width, height, 0.0f);
88 vertices[0].texture = XMFLOAT2(0.0f, 0.0f);
90 vertices[1].position = XMFLOAT3(width, -height, 0.0f);
91 vertices[1].texture = XMFLOAT2(1.0f, 1.0f);
93 vertices[2].position = XMFLOAT3(-width, -height, 0.0f);
94 vertices[2].texture = XMFLOAT2(0.0f, 1.0f);
97 vertices[3].position = XMFLOAT3(-width, height, 0.0f);
98 vertices[3].texture = XMFLOAT2(0.0f, 0.0f);
100 vertices[4].position = XMFLOAT3(width, height, 0.0f);
101 vertices[4].texture = XMFLOAT2(1.0f, 0.0f);
103 vertices[5].position = XMFLOAT3(width, -height, 0.0f);
104 vertices[5].texture = XMFLOAT2(1.0f, 1.0f);
107 for (i = 0; i < m_indexCount; i++)
113 vertexBufferDesc.Usage = D3D11_USAGE_DEFAULT;
114 vertexBufferDesc.ByteWidth =
sizeof(VertexType) * m_vertexCount;
115 vertexBufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
116 vertexBufferDesc.CPUAccessFlags = 0;
117 vertexBufferDesc.MiscFlags = 0;
118 vertexBufferDesc.StructureByteStride = 0;
121 vertexData.pSysMem = vertices;
122 vertexData.SysMemPitch = 0;
123 vertexData.SysMemSlicePitch = 0;
126 result = device->CreateBuffer(&vertexBufferDesc, &vertexData, &m_vertexBuffer);
129 Logger::Get().
Log(
"Could not create vertex buffer", __FILE__, __LINE__, Logger::LogLevel::Error);
134 indexBufferDesc.Usage = D3D11_USAGE_DEFAULT;
135 indexBufferDesc.ByteWidth =
sizeof(
unsigned long) * m_indexCount;
136 indexBufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER;
137 indexBufferDesc.CPUAccessFlags = 0;
138 indexBufferDesc.MiscFlags = 0;
139 indexBufferDesc.StructureByteStride = 0;
142 indexData.pSysMem = indices;
143 indexData.SysMemPitch = 0;
144 indexData.SysMemSlicePitch = 0;
147 result = device->CreateBuffer(&indexBufferDesc, &indexData, &m_indexBuffer);
150 Logger::Get().
Log(
"Could not create index buffer", __FILE__, __LINE__, Logger::LogLevel::Error);
161 Logger::Get().
Log(
"Buffers initialized", __FILE__, __LINE__, Logger::LogLevel::Initialize);
167void display_plane_class::ShutdownBuffers()
169 Logger::Get().
Log(
"Shutting down Plane buffers", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
174 m_indexBuffer->Release();
181 m_vertexBuffer->Release();
185 Logger::Get().
Log(
"Plane buffers shut down", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
191void display_plane_class::RenderBuffers(ID3D11DeviceContext* deviceContext)
198 stride =
sizeof(VertexType);
202 deviceContext->IASetVertexBuffers(0, 1, &m_vertexBuffer, &stride, &offset);
205 deviceContext->IASetIndexBuffer(m_indexBuffer, DXGI_FORMAT_R32_UINT, 0);
208 deviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
void Log(const std::string &message, const std::string &fileName, int lineNumber, LogLevel level=LogLevel::Info)