diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2021-01-11 00:17:54 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2021-01-11 00:17:54 +0000 |
| commit | 6f9c2dd7f1a5fc7470cd87b3937db195dced72bc (patch) | |
| tree | 84aef8fb1eb7c3a991dfc2fcf08609700420b890 /AssetLoader/src/GLTFLoader.cpp | |
| parent | GLTF loader: reworked buffer initialization with user data (diff) | |
| download | DiligentTools-6f9c2dd7f1a5fc7470cd87b3937db195dced72bc.tar.gz DiligentTools-6f9c2dd7f1a5fc7470cd87b3937db195dced72bc.zip | |
GLTF loader: reworked loading of checker board stub texture
Diffstat (limited to 'AssetLoader/src/GLTFLoader.cpp')
| -rw-r--r-- | AssetLoader/src/GLTFLoader.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
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<Uint8> 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<TextureInitData> pTexInitData{MakeNewRCObj<TextureInitData>()()}; + + 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) |
