HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Monitorkártya információk és lehetséges felbontási módok lekérdezése


DirectX 2. rész

Példaprogram letöltése

8444 bájt


Ha DirectX-et használunk alkalmazásunk készítése során, akkor nem árt, ha tisztában vagyunk azzal, hogy az adott gépben lévő monitorkártya milyen paraméterekkel rendelkezik és milyen felbontású és színmélységű kép előállításra képes és ehhez milyen képfrissítési frekvencia társulhat.

A szükséges információ lekérdezéséhez – hasonlóan az első cikkhez – most is kapcsolatot kell teremtenie alkalmazásunknak a DirectX IDirect3D8 interfészével, melyhez most is a Direct3DCreate8 függvényt használjuk fel.
procedure TForm1.FormCreate(Sender: TObject);
var
  dm: TD3DDisplayMode;
  pIdentifier: TD3DAdapter_Identifier8;
  i, c: integer;
begin
  FD3D:=nil;
  FD3D:=Direct3DCreate8(D3D_SDK_VERSION);
if Assigned(FD3D) then begin
Ha a kapcsolat sikeresen létrejött, akkor az IDirect3D8 interfész GetAdapterModeCount függvény használatával lekérdezzük, hogy az elsődleges monitorkártyához hány lehetséges felbontási mód tartozik. Paraméterként a monitorkártya sorszámát kell megadnunk, vagy a D3DADAPTER_DEFAULT konstans használatával hivatkozhatunk az elsődlegesre.
      c:=FD3D.GetAdapterModeCount(D3DADAPTER_DEFAULT);
A GetAdapterCount függvénnyel pedig azt határozhatjuk meg, hogy hány monitorkártya található a gépben.
      Label1.Caption:='GetAdapterCount: '+IntToStr(FD3D.GetAdapterCount);
      Label2.Caption:='GetAdapterModeCount: '+IntToStr(c);
Ezt követően kérjük le az elsődleges monitorkártya azonosító információit. Ehhez a GetAdapterIdentifier függvényt kell használnunk. Első paraméterében a monitorkártya sorszámát adhatjuk meg, a másodikban általában nulla érték használatos, vagy a D3DENUM_NO_WHQL_LEVEL konstans. Utóbbi esetben nem kapunk információt a WHQLLevel-ről. Harmadik paraméterben egy TD3DAdapter_Identifier8 struktúrát kell megadnunk, melyben a lekérdezett adatokat kapjuk vissza. Ha a lekérdezés sikeres volt, akkor a függvény visszatérési értéke D3D_OK lesz.
      if FD3D.GetAdapterIdentifier(0, 0, pIdentifier)=D3D_OK then begin
        ListBox2.Items.Add('Description: '+pIdentifier.Description);
        ListBox2.Items.Add('Driver: '+pIdentifier.Driver);
        ListBox2.Items.Add('DriverVersionLowPart: '+IntToStr(pIdentifier.DriverVersionLowPart));
        ListBox2.Items.Add('DriverVersionHighPart: '+IntToStr(pIdentifier.DriverVersionHighPart));
        ListBox2.Items.Add('VendorId: '+IntToStr(pIdentifier.VendorId));
        ListBox2.Items.Add('DeviceId: '+IntToStr(pIdentifier.DeviceId));
        ListBox2.Items.Add('SubSysId: '+IntToStr(pIdentifier.SubSysId));
        ListBox2.Items.Add('Revision: '+IntToStr(pIdentifier.Revision));
        ListBox2.Items.Add('DeviceIdentifier: '+GUIDToString(pIdentifier.DeviceIdentifier));
        ListBox2.Items.Add('WHQLLevel: '+IntToStr(pIdentifier.WHQLLevel));
      end;
Következő részfeladatunk lekérdezni az összes lehetséges felbontási és színmélységi módot, melybe átkapcsolhatjuk a monitorkártyát. Ezt egy ciklus segítségével tehetjük meg, mely nullától az összes lehetséges mód számáig megy. Ez utóbbit már lekérdeztük a GetAdapterModeCount függvénnyel.
      for i:=0 to c-1 do begin
Egy-egy mód tulajdonságainak meghatározásához az EnumAdapterModes függvényt hívjuk segítségül. Itt első paraméterként a monitorkártya sorszámát, másodikként a kérdéses mód sorszámát kell megadni. Harmadik paraméterként egy TD3DDisplayMode struktúrát vár a függvény, melybe a lekérdezett adatokat kapjuk vissza. Ha a függvény visszatérési értéke D3D_OK, akkor a lekérdezés sikeres volt.
        if FD3D.EnumAdapterModes(D3DADAPTER_DEFAULT, i, dm)=D3D_OK then begin
A TD3DDisplayMode struktúrával cikksorozatunk első részében már találkoztunk. Ebből tudhatjuk meg a képernyő lehetséges szélességét, magasságát pixelben, a kép frissítési frekvenciát Hz-ben, valamint a színmélységre vonatkozó értéket.
          ListBox1.Items.Add(IntToStr(dm.Width)+' x '+IntToStr(dm.Height)+#9+IntToStr(dm
             .RefreshRate)+#9+IntToStr(dm.Format));
…



Cikksorozat

#IDKategóriaCikk címeSorozat
3916WindowsA javascript nyelv bemutatása1. rész
3946WindowsJavascript változók és operátorok2. rész
3975WindowsKódvezérlés JScript-ben3. rész
4004WindowsFüggvények és objektumok4. rész
4036WindowsFejlett funkciók a JavaScript nyelvben5. rész
4066WindowsFejlett funkciók a JavaScript nyelvben - folytatás6. rész
4116WindowsReguláris kifejezések7. rész
4145WindowsReguláris kifejezések - folytatás8. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 660. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |