繁体   English   中英

无法在DirectX11上创建1D纹理

[英]Cannot create a 1D Texture on DirectX11

出于某种原因,当我尝试创建1d纹理时,下面的代码崩溃了。

D3D11_TEXTURE1D_DESC desc;
ZeroMemory(&desc, sizeof(D3D11_TEXTURE1D_DESC));
desc.Width = 64;
desc.MipLevels = 1;
desc.ArraySize = 1;
desc.Format = DXGI_FORMAT_R8G8B8A8_SNORM;
desc.Usage = D3D11_USAGE_STAGING;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE | D3D11_CPU_ACCESS_READ;

HRESULT hr = D3DDev_0001->CreateTexture1D(&desc, NULL, &texture); //crashes here
assert(hr == S_OK);

其中D3DDev_0001是ID3D11Device。 我能够创建3d和2d纹理,但制作1d纹理会导致程序崩溃。 有谁能解释为什么?

USAGE_STAGING纹理不能包含任何BindFlags,因为它无法在图形上下文中设置以用作SRV,UAV或RTV。 如果你想要一个STAGING纹理,可以将BindFlags设置为0;如果你只想要一个可以绑定到上下文的“普通”纹理,可以将Usage设置为D3D11_USAGE_DEFAULT。

USAGE_STAGING资源要么是CPU在复制到USAGE_DEFAULT资源之前填充数据,要么是GPU拷贝的目的地,以便将数据从GPU返回到CPU。

这个错误的确切原因可以在“D3D11的调试层”打印的消息中解释; 用它来查找将来出现这些错误的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM