Renderer initialization
System: INFO: DirectX 12.0 installed
System: VideoCard Detected: ATI (Unknown)
Direct3D9 driver is creating...
Best-match display mode: 1024x768x32 (Error=8)
Creating D3D device (Adapter format: D3DFMT_X8R8G8B8, BackBuffer format: D3DFMT_A8R8G8B8, Depth format: D3DFMT_D24S8)
D3D Adapter: Driver name: aticfx32.dll
D3D Adapter: Driver description: AMD Radeon HD 5700 Series
D3D Adapter: Driver version: 8.17.10.1247
Renderer initialization
System: INFO: DirectX 12.0 installed
System: VideoCard Detected: Unknown ()
Direct3D9 driver is creating...
Best-match display mode: 1280x1024x32 (Error=8)
Creating D3D device (Adapter format: D3DFMT_X8R8G8B8, BackBuffer format: D3DFMT_A8R8G8B8, Depth format: D3DFMT_D24S8)
D3D Adapter: Driver name: nvldumd.dll
D3D Adapter: Driver description: NVIDIA GeForce GTX 1060 6GB
D3D Adapter: Driver version: 32.00.15.7283
вторая (gtx1060) без видеовыхода (mining edition)
Здесь нужно точно знать, какие игровые движки проглотят тандем из видеокарт, а какие нет.
маловероятно, что разработчики драйверов предусмотрели такой сценарий использования.
Возможно есть способ решить вашу проблему, програмно, но зачем на это тратить время, когда на авито обычные gtx1060 стоят в районе 5тр, и в то же время в магазинах в свободной продаже есть RTX5xxx серии?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Direct3D9, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
direct3d: IDirect3D9;
device: IDirect3DDevice9;
display: TD3DDisplayMode;
pIdentifier: TD3DAdapterIdentifier9;
params: TD3DPresentParameters;
procedure TForm1.FormCreate(Sender: TObject);
var i: cardinal;
re: HREsult;
begin
direct3d := Direct3DCreate9( D3D_SDK_VERSION );
if direct3d=nil then ShowMessage('Ошибка создания Direct3D');
Memo1.Lines.add('Adapters: '+inttostr(direct3d.GetAdapterCount));
for i:=0 to direct3d.GetAdapterCount-1 do begin
Memo1.Lines.add('');Memo1.Lines.add('');
Memo1.Lines.add('Adapter #:'+inttostr(i));
re:=direct3d.GetAdapterIdentifier(i, 0, pIdentifier);
Memo1.Lines.add('result:'+inttostr(re));
Memo1.Lines.add('Driver:'+(pIdentifier.Driver));
Memo1.Lines.add('Description:'+(pIdentifier.Description));
Memo1.Lines.add('DeviceName:'+(pIdentifier.DeviceName));
re:=direct3d.GetAdapterDisplayMode( i, display );
Memo1.Lines.add('result:'+inttostr(re));
Memo1.Lines.add('width:'+inttostr(display.Width));
Memo1.Lines.add('Height:'+inttostr(display.Height));
Memo1.Lines.add('RefreshRate:'+inttostr(display.RefreshRate));
end;
ZeroMemory( @params, SizeOf(params) );
params.Windowed := True;
params.SwapEffect := D3DSWAPEFFECT_DISCARD;
params.BackBufferFormat := display.Format;
direct3d.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
Handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING,
@params, device );
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
device.Clear(0,nil,D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,255,0), 1.0, 0);
device.Present(nil, nil, 0, nil);
Timer1.Enabled:=false;
end;
end.
Adapters: 1
Adapter #:0
result:0
Driver:aticfx32.dll
Description:AMD Radeon HD 5700 Series
DeviceName:\\.\DISPLAY1
result:0
width:1280
Height:1024
RefreshRate:60
пока не изучал, как работает Direct3D но по логике вещей всё просто - игра просит винду проинициализировать видеокарту, и не указывает, какую именно, и винда на своё усмотрение подаёт ей в работу видеокарту №1. А мне надо, чтобы ВИНДА подавала в игру видеокарту №2.
Делфи не подойдет для исследований, он как раз цепляет только унифицированный API.
Потому что должно быть удачное сочетание драйвера и прошивки, так как имеете дело с мутант-видеокартой.
Но и драйвер и прошивка GTX1060 - в норме. Потому что если отключить AMD-шную карту - отрисовка нормально идёт через GTX1060, и GetAdapter выдаёт её!
Вы как-то подготавливали драйвера?
После установки измененного драйвера NVIDIA так и делают - отключают условную встройку.