DirectX CreateRenderTargetView未正确初始化
由于某种原因,我似乎无法初始化我的DirectX CreateRenderTargetView未正确初始化,directx,direct3d,directx-11,d3dx,Directx,Direct3d,Directx 11,D3dx,由于某种原因,我似乎无法初始化我的RenderTargetView(它保持为NULL),这会导致访问冲突 以下是应初始化RenderTargetView的行: hr = g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_pRenderTargetView); pBackBuffer是后台缓冲区,它获取一个值,它不是NULL。但是,RenderGetView在整个过程中保持NULL。知道原因吗?为了跟踪Direct
RenderTargetView
(它保持为NULL
),这会导致访问冲突
以下是应初始化RenderTargetView的行:
hr = g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_pRenderTargetView);
pBackBuffer
是后台缓冲区,它获取一个值,它不是NULL
。但是,RenderGetView在整个过程中保持NULL
。知道原因吗?为了跟踪DirectX11错误,您最好使用创建D3D11设备,当您启动应用程序时,它会将错误消息打印到Visual Studio中的输出窗口
// Create device and swap chain
HRESULT hr;
UINT flags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
#if defined( DEBUG ) || defined( _DEBUG )
flags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
// Create device and swap chain
D3D_FEATURE_LEVEL FeatureLevelsRequested = D3D_FEATURE_LEVEL_11_0; // Use d3d11
UINT numLevelsRequested = 1; // Number of levels
D3D_FEATURE_LEVEL FeatureLevelsSupported;
if (FAILED (hr = D3D11CreateDeviceAndSwapChain( NULL,
D3D_DRIVER_TYPE_HARDWARE,
NULL,
0,
&FeatureLevelsRequested,
numLevelsRequested,
D3D11_SDK_VERSION,
&sd_,
&swap_chain_,
&d3ddevice_,
&FeatureLevelsSupported,
&immediate_context_)))
{
MessageBox(hWnd, L"Create device and swap chain failed!", L"Error", 0);
}
我认为您无法创建渲染目标视图,因为第二个参数为NULL:
HRESULT CreateRenderTargetView
(
[in] ID3D11Resource *pResource,
[in] const D3D11_RENDER_TARGET_VIEW_DESC *pDesc, <== You need to pass in a valid description
[out] ID3D11RenderTargetView **ppRTView
);
我使用调试标志创建设备。但是,没有错误消息,只是访问冲突错误。您可以粘贴初始化Direct3D11的完整代码吗?从创建设备到setrendertarget和viewport。第二个参数完全可以使用NULL。如果您这样做,您的视图将被允许访问整个资源?ID3D11Texture2D*纹理;mSwapChain->GetBuffer(0,u_uidof(ID3D11Texture2D),(void**)(&texture));
D3D11_RENDER_TARGET_VIEW_DESC desc = {0};
desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;