@@ -8,21 +8,40 @@ Mesh::Mesh(std::string name) : Component::Component(name) {
88 this ->m_dev = nullptr ;
99 this ->m_list = nullptr ;
1010
11- this ->m_renderer = nullptr ;
11+ this ->m_renderer = this -> m_core -> GetRenderer () ;
1212
1313 this ->m_bMeshLoaded = false ;
1414}
1515
1616void Mesh::Init () {
1717 Component::Init ();
1818
19- this ->m_renderer = this ->m_core ->GetRenderer ();
2019
2120 if (D3D12* d3d12 = dynamic_cast <D3D12*>(this ->m_renderer )) {
2221 this ->D3D12Init (d3d12);
2322 }
2423}
2524
25+ void Mesh::UploadVertices () {
26+ D3D12* d3d12 = dynamic_cast <D3D12*>(this ->m_renderer );
27+
28+ if (!d3d12) {
29+ spdlog::error (" {0}: Failed uploading vertices. D3D12 Renderer not initialized." , this ->m_name );
30+ throw std::exception ();
31+ return ;
32+ }
33+
34+ spdlog::debug (" {0}: Uploading vertices to GPU." , this ->m_name );
35+ for (std::pair<UINT, std::vector<Vertex>> object : this ->m_vertices ) {
36+ ComPtr<ID3D12Resource> VBO;
37+ d3d12->CreateBuffer (&object.second [0 ], object.second .size () * sizeof (Vertex), VBO);
38+ VBO->SetName (L" StaticMesh VBO" );
39+ spdlog::debug (" {0}: {1:d} vertices uploaded for mesh {2:d}" , this ->m_name , object.second .size (), object.first );
40+ }
41+
42+ spdlog::debug (" {0}: Vertex Buffer Object initialized" , this ->m_name );
43+ }
44+
2645void Mesh::Update () {
2746 Component::Update ();
2847
@@ -33,7 +52,7 @@ void Mesh::D3D12Init(D3D12* renderer) {
3352 renderer->GetDevice (this ->m_dev );
3453 renderer->GetCommandList (this ->m_list );
3554
36-
55+ this -> UploadVertices ();
3756}
3857
3958/*
@@ -80,7 +99,8 @@ void Mesh::LoadModel(std::string filename) {
8099 const aiTexture* texture = scene->GetEmbeddedTexture (texPath.C_Str ());
81100 ResourceManager* resMgr = ResourceManager::GetInstance ();
82101 ComPtr<ID3D12Resource> resource;
83- resMgr->LoadTexture ((BYTE*)texture->pcData , texture->mWidth , texture->mFilename .C_Str (), resource.GetAddressOf ());
102+ resMgr->LoadTexture ((BYTE*)texture->pcData , texture->mWidth , texture->mFilename .C_Str (), resource);
103+ this ->m_textures [i] = resource;
84104 }
85105 }
86106}
0 commit comments