ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4439140
Jetzt (Chat):
41 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
DirectX API
Re: Enumeration von DX9
GepinntSeite: < 1 2 3
AutorThema
Leviathan Offline
ZFX'ler


Registriert seit:
12.06.2004

Nordrhein-Westfalen
Re: Enumeration von DX9Nach oben.
Es gab jetzt so viele Meinungen, Antworten und Codebeispiele zu dem Thema aber ich ersehe aus dem ganzen immer noch nicht, ob nun eine graphics enumeration heutzutage notwendig ist und wenn ja, wie viel Aufwand man dafür investieren sollte...
Kann da nun jemand, der erfahren ist, ein Schlusswort posten?
27.08.2004, 13:51:31 Uhr
@uzingLG Offline
ZFX'ler


Registriert seit:
01.07.2003

Österreich
Re: Enumeration von DX9Nach oben.
Die Enumeration ist ein äusserst wichtiger Bestandteil eines Spieles/Programmes, das mit Grafik arbeitet. Idealerweise ist die Enumeration gleich in der Engine integriert. Wie wird's eigentlich mit nVidia SLI aussehen? Können solche Systeme korrekt enumeriert werden?
27.08.2004, 14:27:11 Uhr
Pyramid-Network
Specialist Offline
ZFX'ler


Registriert seit:
29.08.2003

Nordrhein-Westfalen
99606527
Re: Enumeration von DX9Nach oben.
Hallo, ich schlage mich im Moment auch mit der Enumeration rum. Klappt soweit alles auch ganz gut, allerdings würde ich noch gerne wissen worin der Unterschied zwischen Backbufferformat und Displayformat besteht. Kann mir das jemand erklären?
14.09.2004, 22:57:54 Uhr
BugSoft
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Enumeration von DX9Nach oben.

steht doch in der doku unter CheckDeviceType ganz gut erklärt. im windowed mode ist das adapterformat das format des desktops das backbuffer format immer das backbufferformat. so kann man intern andere formate verwenden als die endgültige ausgabe schließlich verwendet.
14.09.2004, 23:04:46 Uhr
DirectX 10
Specialist Offline
ZFX'ler


Registriert seit:
29.08.2003

Nordrhein-Westfalen
99606527
Re: Enumeration von DX9Nach oben.
Also bedeutet das, dass bei Fullscreenanwendungen das Displayformat immer das selbe wie das Backbufferformat sein muß? Und nur wenn man Fensteranwendungen hat muß man sich extra noch um das Displayformat kümmern?
14.09.2004, 23:11:27 Uhr
BugSoft
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Enumeration von DX9Nach oben.

1. ja, steht auch so in der doku, da dort keine colorconversion erlaubt ist.
2. ja, GetDisplayMode().
14.09.2004, 23:19:58 Uhr
DirectX 10
MeXDelphi Offline
ZFX'ler


Registriert seit:
31.03.2004

Bayern
Re: Enumeration von DX9Nach oben.
Hallo allezusammen

Soweit ich das hier sehe, sind die meisten Beispiele einer Enumeration darauf aus, von vorneherein bestimmte sachen auszuschliessen - und damit verzetteln sich die meisten (ich auch ). Deshalb binn ich dazu übergegengen, alles zu enumerieren und in eine schöne Datenstruktur zu packen ... hinterher wird nur noch das ausgesucht und rausgepickt was benötigt wird.

Da ich in Delphi programmiere habe ich versucht meine enumeration auf das wesentlich zu beschränken um verwirrungen bei den C_lern zu vermeiden und habe das ganze in Pseudo-Pseudocode gepackt

Code:
function EnumAdapter
begin


//Loop über alle Adapter(Grafikkarten)
for AdapterLoop := 0 to IDirect3DDevice9.GetAdapterCount -1 do
  begin

  1. Den Aktuellen DisplayMode speichern
  2. Den Identifier der Grafikkarte (Adapter) speichern
  3. DeviceName .. DriverVersion etc. sind  dort gespeichert

  //Loop über alle erlaubten Formate (D3DFMT_X8R8G8B8,D3DFMT_X1R5G5B5,D3DFMT_R5G6B5)
  for FormatLoop := 0 to 2 do
    begin

    1.Wieviele Modes werden mit diesem Format unterstützt |   Wenn keiner - ab zum nächsten

    //Loop über Alle Modes
    for ModeLoop := 0 to ModeCount -1 do
      begin

      1.Display Mode mit dem Format(AdapterFormats) enumerieren und in d3ddspmode zwischenspeichern
        IDirect3D9.EnumAdapterModes(AdapterLoop, AdapterFormats[FormatLoop], ModeLoop, d3ddspmode)
      2.Alles sichern

      end; //Loop über Alle Modes    
    end; //Loop erlaubten Formate 
  end; //Loop über alle Adapter

end; // EnumAdapter


Code:
function EnumCombos
begin
// die Devices durchlaufen (Hal..Sw..Ref)
for DeviceLoop := 0 to 2 do
  begin

  1. ist Device da ? wenn ja HAL..SW..REF-caps sichern
    IDirect3D9.GetDeviceCaps(..)
  2. DeviceTyp Speichern
  3. überhaupt HardwareSupport Da ? 
     Caps_Device.DevCaps and D3DDEVCAPS_HWTRANSFORMANDLIGHT = 0  
  4. keine Hardwareunterstützung = raus

  // Loop AdapterFormate (D3DFMT_X8R8G8B8,D3DFMT_X1R5G5B5,D3DFMT_R5G6B5)
  for AdptFmtLoop := 0 to 2 do
    begin
    // Loop Fullscren Windowed
    for WndFuLoop := 0 to 1 do
      begin

      1.AdptFmtSwitch := TRUE; // hier weil windowed rein muss
      2.if WndFuLoop = 0 then bWindowed := TRUE else bWindowed := FALSE;

      // Loop BackBufferFormate 
      for BBFmtLoop := 0 to 5 do(D3DFMT_A2R10G10B10,D3DFMT_A8R8G8B8,D3DFMT_X8R8G8B8,D3DFMT_A1R5G5B5,D3DFMT_X1R5G5B5,D3DFMT_R5G6B5)
        begin
        
        1. Haben wir eine passende combo von AdapterFormat <-> Backbuffer <-> Fullscreen/Windowed ? Wenn nein, nächster Schleifendurchlauf.
           IDirect3D9.CheckDeviceType(Adapter,
                                            D3DDevTypes[DeviceLoop],     //const d3dDevTypes  : Array[0..2] of D3DDEVTYPE  = (D3DDEVTYPE_HAL,D3DDEVTYPE_SW,D3DDEVTYPE_REF);  
                                            AdapterFormats[AdptFmtLoop], 
                                            BackBufferFmt[BBFmtLoop],
                                            bWindowed)
        2. Speichern .. Speicher bereitstellen wenn sich Windoewed bzw. AdptFmtSwitch ändern

        if AdptFmtSwitch = TRUE then
          begin

          1. AnzFmtAdapter erhöhen
          2. Array ComboInfo vergrössern
          3. Windowed speichern
          4. fmt_Adapter speichern
          5. AdptFmtSwitch := FALSE;

          end; // AdptFmtSwitch 

        3. Den rest auf jedenfall speichern
        4. AnzFmtBB erhöhen
        5. Array BBInfo vergrössern
        6. BackBufferFmt speichern

        // Loop über zulässige Depth/Stencil Formate mit const DepthStencilFmt(D3DFMT_D16,D3DFMT_D32,D3DFMT_D24X8,D3DFMT_D24S8,D3DFMT_D24X4S4,D3DFMT_D15S1)
        for DSLoop := 0 to 5 do
          begin

          1.Kompatibel mit dem DisplayFormat(fmt_Adapter)
            IDirect3D9.CheckDeviceFormat(...)
          2.Kompatibel mit dem Backbuffer
            IDirect3D9.CheckDepthStencilMatch
           - // Wenn ncht, nächste Schleife
          3. Anz_fmt_Stencil erhöhen
          4. Array vergrössern
          5. speichern des DS Formats in combo

          //Multisample mit const MultiSampleTypes(D3DMULTISAMPLE_16_SAMPLES .. D3DMULTISAMPLE_NONE) erfragen
          for MSLoop := 0 to 16 do
            begin
            1. CheckDeviceMultiSampleType mit dem BackBuffer Format
               IDirect3D9.CheckDeviceMultiSampleType(Adapter, ... , BBFmt, ... )
            2. CheckDeviceMultiSampleType mit dem DpthStencil Format
               IDirect3D9.CheckDeviceMultiSampleType(Adapter, ... , DptStclFmt, ... )
             - // Wenn Fehlschlag, nächster Schleifendurchlauf
            3. Speichern und raus aus Schleife

            end; //MSLoop
          end; // Loop Depth/Stencil               
        end; // Loop BackBufferFormate 
      end; // Loop Fullscren Windowed
    end; // Loop AdapterFormate
  end; // DeviceLoop

end; // EnumCombos


Ich hoffe es hilft dem einen oder anderen und trägt nicht noch mehr zur verwirrung bei

06.01.2005, 01:24:24 Uhr
De Dam Offline
ZFX'ler


Registriert seit:
06.09.2004

Baden-Württemberg
Enumeration in Direct DrawNach oben.
Bitte löschen [...]

1 Mal gendert, zuletzt am 29.04.2006, 13:24:22 Uhr von De Dam.
29.04.2006, 13:23:36 Uhr
CrystalCoder Unanwesend... :D
ZFX'ler


Registriert seit:
03.03.2002

Deutschland
121507639
Re: Enumeration von DX9Nach oben.
Darf ich mal fragen wie du dazu kommst ein Jahr und knapp 4 Monate nach dem letzten Post eine Löschung dieses Threads zu beantragen?

Wie ich sehe warst du an dieser Diskussion nichtmal beteiligt.

Das find ich schon en bissi eigenartig...

Ausserdem könnte der Inhalt anderen vielleicht noch nützlich sein.

Oder hab ich da was falsch verstanden?



2 Mal gendert, zuletzt am 29.04.2006, 16:25:24 Uhr von CrystalCoder.
29.04.2006, 16:24:12 Uhr
db - Interactive
De Dam Offline
ZFX'ler


Registriert seit:
06.09.2004

Baden-Württemberg
Re: Enumeration von DX9Nach oben.
ich meinte nicht den thread ich meinte meinen kommentat, versehentlcih einen eintrag gemacht

( diesen kommentar bitte auch löschen)
29.04.2006, 16:39:33 Uhr
Lex Offline
ZFX'ler


Registriert seit:
01.06.2003

Bayern
exan_@hotmail.com
Re: Enumeration von DX9Nach oben.
lol, wieso soll man deine beiträge löschen ?

1 Mal gendert, zuletzt am 29.04.2006, 16:50:18 Uhr von Lex.
29.04.2006, 16:49:57 Uhr
GepinntSeite: < 1 2 3


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel