Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
Delphi 10.4 Sydney
|
AW: Debugger hält beim Programmende in CPU-Fenster
13. Dez 2019, 14: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;
|
|
Zitat
|