From 6f9c2dd7f1a5fc7470cd87b3937db195dced72bc Mon Sep 17 00:00:00 2001 From: assiduous Date: Sun, 10 Jan 2021 16:17:54 -0800 Subject: GLTF loader: reworked loading of checker board stub texture --- AssetLoader/src/GLTFLoader.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'AssetLoader/src/GLTFLoader.cpp') diff --git a/AssetLoader/src/GLTFLoader.cpp b/AssetLoader/src/GLTFLoader.cpp index 457349f..5c86402 100644 --- a/AssetLoader/src/GLTFLoader.cpp +++ b/AssetLoader/src/GLTFLoader.cpp @@ -876,14 +876,21 @@ void Model::LoadTextures(IRenderDevice* pDevice, TexDesc.Height = 32; TexDesc.Format = TEX_FORMAT_RGBA8_UNORM; TexDesc.MipLevels = 1; - TexDesc.Usage = USAGE_IMMUTABLE; + TexDesc.Usage = USAGE_DEFAULT; TexDesc.BindFlags = BIND_SHADER_RESOURCE; - std::vector Data(TexDesc.Width * TexDesc.Height * 4); - TextureSubResData Mip0Data{Data.data(), TexDesc.Width * 4}; - GenerateCheckerBoardPattern(TexDesc.Width, TexDesc.Height, TexDesc.Format, 4, 4, Data.data(), Mip0Data.Stride); - TextureData Level0SubresData{&Mip0Data, 1}; - pDevice->CreateTexture(TexDesc, &Level0SubresData, &TexInfo.pTexture); + RefCntAutoPtr pTexInitData{MakeNewRCObj()()}; + + pTexInitData->Levels.resize(1); + auto& Level0 = pTexInitData->Levels[0]; + Level0.Width = TexDesc.Width; + Level0.Height = TexDesc.Height; + Level0.Stride = Level0.Width * 4; + Level0.Data.resize(Level0.Stride * TexDesc.Height); + GenerateCheckerBoardPattern(TexDesc.Width, TexDesc.Height, TexDesc.Format, 4, 4, Level0.Data.data(), Level0.Stride); + + pDevice->CreateTexture(TexDesc, nullptr, &TexInfo.pTexture); + TexInfo.pTexture->SetUserData(pTexInitData); } if (TexInfo.pTexture && pTextureCache != nullptr) -- cgit v1.2.3