Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Directx11-CreateTexture3D内存不足错误_C++_Directx_3d_Directx 11 - Fatal编程技术网

C++ Directx11-CreateTexture3D内存不足错误

C++ Directx11-CreateTexture3D内存不足错误,c++,directx,3d,directx-11,C++,Directx,3d,Directx 11,我正在while循环中创建一个3d纹理,只是为了实验。虽然我没有忘记在最后释放它,但在大约300次循环后,它会导致内存不足错误。 我的代码是: int cntr = 0; while(1) { ID3D11Texture3D* pTex3D = NULL; D3D11_TEXTURE3D_DESC desc; desc.Width = 256; desc.Height = 256; desc.D

我正在while循环中创建一个3d纹理,只是为了实验。虽然我没有忘记在最后释放它,但在大约300次循环后,它会导致内存不足错误。
我的代码是:

int cntr = 0;
while(1)
{
    ID3D11Texture3D* pTex3D = NULL;
    D3D11_TEXTURE3D_DESC desc;
      desc.Width              = 256;
      desc.Height             = 256;
      desc.Depth              = 20;
      desc.MipLevels          = 1; 
      desc.Format             = DXGI_FORMAT_R32G32B32A32_FLOAT;
      desc.Usage              = D3D11_USAGE_DEFAULT ; 
      desc.BindFlags          = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS ;
      desc.CPUAccessFlags     = 0;  
      desc.MiscFlags          = 0;
    HRESULT hr = g_pd3dDevice->CreateTexture3D(&desc, NULL, &pTex3D);
    SAFE_RELEASE( pTex3D );

    Sleep(10);

    if( hr != S_OK )
        printf("");

    cntr++;
}

请帮帮我。谢谢

准确的错误代码是什么?此外,请检查Release()的返回值。资源释放在Direct3D11中延迟。如果要使用调试层报告活动对象,您将看到引用计数(Release()返回的值)还有内部引用。如果驱动程序没有机会处理这些内容,指针就不会被释放。我认为它会在命令缓冲区已满时处理这些内容,不幸的是,在您的情况下,您不会发出命令,因此我假设它们永远不会被释放,请尝试在释放()后使用DXGISwapChain->Present()或Context->Flush()如果只是个测试。