in Shared/Rendering/PolylineRenderer.cpp [122:195]
void PolylineRenderer::CreateDeviceDependentResources()
{
if (nullptr == _slateMaterial)
{
_slateMaterial =
std::make_unique<SlateMaterial>(
_deviceResources);
}
_slateMaterial->CreateDeviceDependentResources();
{
const CD3D11_BUFFER_DESC constantBufferDesc(sizeof(SlateModelConstantBuffer), D3D11_BIND_CONSTANT_BUFFER);
ASSERT_SUCCEEDED(
_deviceResources->GetD3DDevice()->CreateBuffer(
&constantBufferDesc,
nullptr,
&_modelConstantBuffer
)
);
}
// Once all shaders are loaded, create the mesh.
{
// Load mesh vertices. Each vertex has a position and a color.
// Note that the cube size has changed from the default DirectX app
// template. Windows Holographic is scaled in meters, so to draw the
// cube at a comfortable size we made the cube width 0.2 m (20 cm).
const float sx = 1.0f, sy = 1.0f, sz = 1.0f;
{
static const std::array<VertexPositionColorTexture, 8> cubeVertices =
{ {
{ { -sx, -sy, -sz },{ 1.0f, 0.0f, 0.0f },{ 0.0f, 1.0f } },
{ { -sx, -sy, sz },{ 0.0f, 1.0f, 0.0f },{ 0.0f, 1.0f } },
{ { -sx, sy, -sz },{ 0.0f, 0.0f, 1.0f },{ 0.0f, 0.0f } },
{ { -sx, sy, sz },{ 0.0f, 1.0f, 0.0f },{ 0.0f, 0.0f } },
{ { sx, -sy, -sz },{ 1.0f, 0.0f, 1.0f },{ 1.0f, 1.0f } },
{ { sx, -sy, sz },{ 0.0f, 1.0f, 0.0f },{ 1.0f, 1.0f } },
{ { sx, sy, -sz },{ 0.0f, 0.0f, 1.0f },{ 1.0f, 0.0f } },
{ { sx, sy, sz },{ 0.0f, 1.0f, 0.0f },{ 1.0f, 0.0f } },
} };
for (size_t i = 0; i < cubeVertices.size(); ++i)
{
_vertices.emplace_back(
cubeVertices[i]);
_vertices.emplace_back(
cubeVertices[(i + 1) % cubeVertices.size()]);
}
}
D3D11_SUBRESOURCE_DATA vertexBufferData = { 0 };
vertexBufferData.pSysMem = &_vertices[0];
vertexBufferData.SysMemPitch = 0;
vertexBufferData.SysMemSlicePitch = 0;
const CD3D11_BUFFER_DESC vertexBufferDesc(
static_cast<uint32_t>(sizeof(VertexPositionColorTexture) * _vertices.size()),
D3D11_BIND_VERTEX_BUFFER);
ASSERT_SUCCEEDED(
_deviceResources->GetD3DDevice()->CreateBuffer(
&vertexBufferDesc,
&vertexBufferData,
&_vertexBuffer
)
);
}
_loadingComplete = true;
}