MCPcopy Create free account
hub / github.com/TheRealMJP/BakingLab / Initialize

Method Initialize

SampleFramework11/v1.02/Graphics/SpriteRenderer.cpp:30–194  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28}
29
30void SpriteRenderer::Initialize(ID3D11Device* device)
31{
32 this->device = device;
33
34 const std::wstring shaderPath = SampleFrameworkDir() + L"Shaders\\Sprite.hlsl";
35
36 // Load the shaders
37 vertexShader = CompileVSFromFile(device, shaderPath.c_str(), "SpriteVS", "vs_4_0");
38 vertexShaderInstanced = CompileVSFromFile(device, shaderPath.c_str(), "SpriteInstancedVS", "vs_4_0");
39 pixelShader = CompilePSFromFile(device, shaderPath.c_str(), "SpritePS", "ps_4_0");
40 pixelShaderOpaque = CompilePSFromFile(device, shaderPath.c_str(), "SpriteOpaquePS", "ps_4_0");
41
42 // Define the input layouts
43 D3D11_INPUT_ELEMENT_DESC layout[] =
44 {
45 { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
46 { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }
47 };
48
49 DXCall(device->CreateInputLayout(layout, 2, vertexShader->ByteCode->GetBufferPointer(),
50 vertexShader->ByteCode->GetBufferSize(), &inputLayout));
51
52 D3D11_INPUT_ELEMENT_DESC layoutInstanced[] =
53 {
54 { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
55 { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
56 { "TRANSFORM", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
57 { "TRANSFORM", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 16, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
58 { "TRANSFORM", 2, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 32, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
59 { "TRANSFORM", 3, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 48, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
60 { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 64, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
61 { "SOURCERECT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 80, D3D11_INPUT_PER_INSTANCE_DATA, 1 }
62 };
63
64 DXCall(device->CreateInputLayout(layoutInstanced, 8, vertexShaderInstanced->ByteCode->GetBufferPointer(),
65 vertexShaderInstanced->ByteCode->GetBufferSize(), &inputLayoutInstanced));
66
67 // Create the vertex buffer
68 SpriteVertex verts[] =
69 {
70 { Float2(0.0f, 0.0f), Float2(0.0f, 0.0f) },
71 { Float2(1.0f, 0.0f), Float2(1.0f, 0.0f) },
72 { Float2(1.0f, 1.0f), Float2(1.0f, 1.0f) },
73 { Float2(0.0f, 1.0f), Float2(0.0f, 1.0f) }
74 };
75
76 D3D11_BUFFER_DESC desc;
77 desc.Usage = D3D11_USAGE_IMMUTABLE;
78 desc.ByteWidth = sizeof(SpriteVertex) * 4;
79 desc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
80 desc.CPUAccessFlags = 0;
81 desc.MiscFlags = 0;
82
83 D3D11_SUBRESOURCE_DATA initData;
84 initData.pSysMem = verts;
85 initData.SysMemPitch = 0;
86 initData.SysMemSlicePitch = 0;
87 DXCall(device->CreateBuffer(&desc, &initData, &vertexBuffer));

Callers

nothing calls this directly

Calls 8

SampleFrameworkDirFunction · 0.85
CompileVSFromFileFunction · 0.85
CompilePSFromFileFunction · 0.85
DXCallFunction · 0.85
Float2Class · 0.85
CBSizeFunction · 0.85
GetBufferPointerMethod · 0.80
GetBufferSizeMethod · 0.80

Tested by

no test coverage detected