summaryrefslogtreecommitdiffstats
path: root/AssetLoader/src/GLTFLoader.cpp
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-01-11 00:17:54 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-01-11 00:17:54 +0000
commit6f9c2dd7f1a5fc7470cd87b3937db195dced72bc (patch)
tree84aef8fb1eb7c3a991dfc2fcf08609700420b890 /AssetLoader/src/GLTFLoader.cpp
parentGLTF loader: reworked buffer initialization with user data (diff)
downloadDiligentTools-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.cpp19
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)