gpt4 book ai didi

delphi - 在运行时检测 GPU 是否支持 Pixel Shader 2.0 (Firemonkey)

转载 作者:行者123 更新时间:2023-12-03 15:25:01 28 4
gpt4 key购买 nike

这个问题来 self 之前的问题:

Delphi XE7 Abstract Error on StyleLookup with Effect (FireMonkey)

基本上,我有几个应用了效果的样式控件。这些效果适用于大多数系统,因此我不想将它们从我的风格中全部剔除,以供少数客户使用。有没有办法检测客户端是否有 DirectX 9 并且安装的 GPU 是否支持 Pixel Shader 2.0?

最佳答案

据我所知,没有直接的方法来确定 DirectX 版本,但是 Microsoft 提供了一个名为 GetDXVersion 的示例函数,它是 DirectX SDK 的一部分。此函数运行一组检查以确定 DirectX 版本。幸运的是,您可以在 DSPack 中找到该函数的 Delphi 翻译。项目。

现在要检测像素着色器版本,您必须使用 IDirect3D9::GetDeviceCaps方法,然后检查 D3DCAPS9PixelShaderVersion 字段的值记录一下。

尝试这个 FMX 示例

uses
Winapi.Windows,
Winapi.Direct3D9,
FMX.Context.DX9;


procedure TForm1.Button1Click(Sender: TObject);
var
LCaps: TD3DCaps9;
LPixelShaderVersionMajor, LPixelShaderVersionMinor : Cardinal;
begin
ZeroMemory(@LCaps, SizeOf(LCaps));
if TCustomDX9Context.Direct3D9Obj.GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, LCaps) = S_OK then
begin
LPixelShaderVersionMajor:= D3DSHADER_VERSION_MAJOR(LCaps.PixelShaderVersion);
LPixelShaderVersionMinor:= D3DSHADER_VERSION_MINOR(LCaps.PixelShaderVersion);
ShowMessage(Format('PixelShaderVersion %d.%d', [LPixelShaderVersionMajor, LPixelShaderVersionMinor]));
end;

//also you can use the D3DPS_VERSION function to determine if the version returned meets the requirements
if (LCaps.PixelShaderVersion >= D3DPS_VERSION(2, 0)) then
ShowMessage('Hey your PixelShaderVersion is compatible');
end;

关于delphi - 在运行时检测 GPU 是否支持 Pixel Shader 2.0 (Firemonkey),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28971884/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com