Directx 用数据填充立方体结构
我不明白这为什么不起作用 我正在尝试向每个立方体纹理面添加纹理数据。出于某种原因,只有第一个(+x)起作用。MSDN文档非常稀少,但看起来应该这样做:Directx 用数据填充立方体结构,directx,directx-11,Directx,Directx 11,我不明白这为什么不起作用 我正在尝试向每个立方体纹理面添加纹理数据。出于某种原因,只有第一个(+x)起作用。MSDN文档非常稀少,但看起来应该这样做: // mip-level 0 data // R8G8B8A8 texture uint32_t sizeWidth = textureWidth * sizeof(uint8_t) * 4; if (isCubeTexture) { for (uint32_t index = 0; index < gCubemapNumTextu
// mip-level 0 data
// R8G8B8A8 texture
uint32_t sizeWidth = textureWidth * sizeof(uint8_t) * 4;
if (isCubeTexture)
{
for (uint32_t index = 0; index < gCubemapNumTextures; ++index)
{
const uint32_t subResourceID = D3D11CalcSubresource(0, index, 1);
context->UpdateSubresource(mTexture, subResourceID, NULL, &textureData.at(sizeWidth * textureHeight * index), sizeWidth, 0);
}
}
然后上传数据后,我生成mip链,如下所示:
context->GenerateMips(mShaderResourceView);
同样,它工作良好,但仅适用于第一个(+x)面。通过将纹理描述置零,创建具有“0”mip级别的纹理。零表示“请完整mip链”,表示超过1 mip(除非您的纹理为1x1) 您对D3D11CalcSubresource的参数有第三个参数“1”,表明只有一个mip,这似乎不是真的。请确保将正确数量的MIP传递给此帮助器函数,否则它将无法计算正确的子资源索引
创建纹理后,可以通过调用GetDesc()获取mip计数。创建纹理时使用的参数是什么?
context->GenerateMips(mShaderResourceView);