На основе MSDN для Direct 3D 11 Graphics в разделе документации «Как создать непосредственный контекст» показан следующий код:
ID3D11Texture2D* pBackBuffer;
// Get a pointer to the back buffer
hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ),
( LPVOID* )&pBackBuffer );
Здесь, называемый pBackBuffer
, имеет тип ID3D11Texture2D
. Документация по методу GetBuffer (https://docs.microsoft.com/en-gb/windows/win32/api/dxgi/nf-dxgi-idxgiswapchain-getbuffer) описывает второй параметр как тип REFIID (The type of interface used to manipulate the buffer)
, а третий как void** A pointer to a back-buffer interface.
Теперь другой раздел в документации по Direct2dпоказывает следующий фрагмент для записи содержимого Direct2d в буфер Direct3d:
hr = m_pSwapChain->GetBuffer(
0,
IID_PPV_ARGS(&pBackBuffer)
);
Здесь BackBuffer используется в CreateDxgiSurfaceRenderTarget
в качестве первого параметра, который является IDXGISurface
, что означает, что Backbuffer, который я получил, является IDXGISurface.
Как узнать, что я могу передать ID3D11Texture2D
и IDXGISurface
этому методу GetBuffer, когда MSDN описывает параметр только как REFIID (см. Выше)? И как я могу выяснить, что еще яможет пройти там?