예제 #1
0
        private void GetHardwareAdapter(IDXGIAdapter1 **ppAdapter)
        {
            using ComPtr <IDXGIAdapter1> adapter = null;
            *ppAdapter = null;

            for (uint adapterIndex = 0;
                 DXGI_ERROR_NOT_FOUND != _dxgiFactory.Ptr->EnumAdapters1(adapterIndex, adapter.GetAddressOf());
                 adapterIndex++)
            {
                DXGI_ADAPTER_DESC1 desc;
                adapter.Ptr->GetDesc1(&desc);

                if (((DXGI_ADAPTER_FLAG)desc.Flags & DXGI_ADAPTER_FLAG.DXGI_ADAPTER_FLAG_SOFTWARE) != 0)
                {
                    continue;
                }

                Guid iid = D3D12.IID_ID3D12Device;
                if (SUCCEEDED(D3D12.D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL.D3D_FEATURE_LEVEL_11_0, &iid, null)))
                {
                    Debug.WriteLine(new string(desc.Description));
                    break;
                }
            }

            *ppAdapter = adapter.Detach();
        }
예제 #2
0
 public int EnumAdapters1([NativeTypeName("UINT")] uint Adapter, [NativeTypeName("IDXGIAdapter1 **")] IDXGIAdapter1 **ppAdapter)
 {
     return(((delegate * unmanaged <IDXGIFactory1 *, uint, IDXGIAdapter1 **, int>)(lpVtbl[12]))((IDXGIFactory1 *)Unsafe.AsPointer(ref this), Adapter, ppAdapter));
 }
 public HRESULT EnumAdapters1(uint Adapter, IDXGIAdapter1 **ppAdapter)
 {
     return(((delegate * unmanaged <IDXGIFactory4 *, uint, IDXGIAdapter1 **, int>)(lpVtbl[12]))((IDXGIFactory4 *)Unsafe.AsPointer(ref this), Adapter, ppAdapter));
 }