Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: Debugger hält beim Programmende in CPU-Fenster

  Alt 13. Dez 2019, 13:54
Jetzt habe ich aber spontan nichts gescheites gefunden, wie man die DirectX-Version ermitteln könnte. Außer in der Registry rumzustöbern.
https://www.delphipraxis.net/179042-...t2d-1-1-a.html

D3D11CreateDevice -> Array mit gewünschten Feature Levels reingeben, das höchste unterstützte wird mit zurückgeben. Wenn größer gleich D3D_FEATURE_LEVEL_10_0, dann
kannst du von D2D1_FEATURE_LEVEL_10 ausgehen.

Beispiel:

Delphi-Quellcode:
function TDirectXBase.CreateD3DResources : Boolean;
var
  LD3DDevice : ID3D11Device;
  LCreationFlags : Cardinal;
  LD3DDeviceContext : ID3D11DeviceContext;
  LDriver : D3D_DRIVER_TYPE;
  SupportedFeatureLevel: D3D_FEATURE_LEVEL;
const
  FeatureLevels : array [0 .. 6] of D3D_FEATURE_LEVEL = (
    D3D_FEATURE_LEVEL_11_1,
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_3,
    D3D_FEATURE_LEVEL_9_2,
    D3D_FEATURE_LEVEL_9_1);
  DriverTypes : set of D3D_DRIVER_TYPE = [D3D_DRIVER_TYPE_HARDWARE, D3D_DRIVER_TYPE_WARP];
begin
  Result := False;
  LCreationFlags := LongWord(D3D11_CREATE_DEVICE_BGRA_SUPPORT);
  {$IFDEF DEBUG}
  LCreationFlags := LCreationFlags or LongWord(D3D11_CREATE_DEVICE_DEBUG);
  {$ENDIF}

  for LDriver in DriverTypes do
  begin
    Result := Succeeded(D3D11CreateDevice(nil, LDriver, 0, LCreationFlags, @FeatureLevels, Length(FeatureLevels), D3D11_SDK_VERSION, LD3DDevice, @SupportedFeatureLevel, LD3DDeviceContext));
    if Result then
      Break;
  end;

// hier dann was mit SupportedFeatureLevel machen

end;
  Mit Zitat antworten Zitat