JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=0a8b9a85dbc229d3c5ac6c8ad89f69a3Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

unterstützt Bildschirmauflösungen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 04.02.2007, 16:27    Titel: unterstützt Bildschirmauflösungen Antworten mit Zitat

Weiß jemand, wie man in einem Game herausfinden kann, welche Auflösungen ein Bildschirm unterstützt ? Bei der msdn hab ich schon nachgeschaut und in der _D3DADAPTER_IDENTIFIER9 steht dazu auch nichts drin.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dr. Best
Senior JLI'ler


Alter: 33
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.02.2007, 16:29    Titel: Antworten mit Zitat

Ich glaube IDirect3D9::CheckDeviceFormat(...) müsste dir da weiterhelfen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 04.02.2007, 17:45    Titel: Antworten mit Zitat

Ne, mit dem testet man nur welche Farbpalette die Graka unterstützt. Da lässt sich z.B. rausfinden ob sie Texturen im Format D3DFMT_A8R8G8B8 unterstützt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 04.02.2007, 18:48    Titel: Antworten mit Zitat

IDirect3D9::EnumAdapterModes(...)

Und dann den D3DDISPLAYMODE Parameter ansehen, der hat dann

Width und Height als Strukturmember.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 04.02.2007, 20:55    Titel: Antworten mit Zitat

Ich hab mal folgende Funktion geschrieben mit der man die Auflösung testen könnte :
CPP:
BOOL CMenuGraphic::IsDisplayModeOk(D3DXVECTOR2 size){

    D3DDISPLAYMODE pMode = {
        static_cast<UINT>(size.x),
        static_cast<UINT>(size.y),
        static_cast<UINT>(72),
        D3DFMT_A8R8G8B8 };

    HRESULT hr = (*m_lpD3D)->EnumAdapterModes(
        D3DADAPTER_DEFAULT,
        D3DFMT_A8R8G8B8,
        (*m_lpD3D)->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_A8R8G8B8),
        &pMode);
    return SUCCEEDED(hr);
}


Nur kommt da immer false raus. Entdeckt da vielleicht jemand nen Fehler ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 04.02.2007, 23:03    Titel: Antworten mit Zitat

1.

CPP:
(*m_lpD3D)->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_A8R8G8B8)


Wenn du das so schon benutzen willst dann solltest du wohl noch ein -1 dazu schreiben. Zum testen könnte 0 auch reichen.

2.

CPP:
D3DDISPLAYMODE pMode = {
        static_cast<UINT>(size.x),
        static_cast<UINT>(size.y),
        static_cast<UINT>(72),
        D3DFMT_A8R8G8B8 };


Bringt dir AFAIK absolut nichts da dir die Methode EnumAdapterModes diese Struktur füllt. Du müsstest also gegen das Ergebniss testen und dementsprechend true oder false zurück liefern.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 05.02.2007, 08:01    Titel: Antworten mit Zitat

Mit EnumAdapterModes werden alle potentiellen Auflösungen deiner Grafikkarte ermittelt. Wenn der Displaytreiber Einschränkungen in den unterstützten Auflösungen anbietet werden diese Einschränkungen gleich mit beachtet. (was heute meisstens der Fall ist, aber ich hatte auch schon auf einem 15 Zoll Röhrenmoni angebotene Auflösungen von 1600x1200 bei 180 Hz gesehen, nur weil die Graka es schaffen würde)
Dann kennt man zwar die Liste der möglichen Auflösungen, muss jetzt aber noch die dazu unterstützten Farbtiefen und Wiederholfrequenzen ermitteln. CheckDeviceFormat hilft dann. Nicht jede Auflösung stehe in jeder Wiederholfrequenz und jeder Farbtiefe zur verfügung (zumindest früher oft nicht, heute ist das für die meissten Grakas kein problem mehr)
PS.: der Hintergrundbuffer selbst unterstützt meisst nur D3DFMT_X8R8G8B8. Ein Alphakanal im Hintergrundbuffer ist meißt nur bedingt zu gebrauchen - zu was soll denn im Hintergrund transparenz erzeugt werden? (zu den Kondensatoren und Wiederständen im inneren des Monitors...)
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 05.02.2007, 08:41    Titel: Antworten mit Zitat

AFE-GmdG hat Folgendes geschrieben:
PS.: der Hintergrundbuffer selbst unterstützt meisst nur D3DFMT_X8R8G8B8. Ein Alphakanal im Hintergrundbuffer ist meißt nur bedingt zu gebrauchen - zu was soll denn im Hintergrund transparenz erzeugt werden? (zu den Kondensatoren und Wiederständen im inneren des Monitors...)


Ich habe schon Beispiele gesehen in denen diese Eigenschaft genutzt wurde um das Fenster semi/transparent zu machen, was dazu diente dem Fenster beliebige Formen zu geben. Ich bin aber grade nicht sicher obs wirklich der Backbuffer eines SwapChains war oder doch nur eine RenderTargetTexture.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 05.02.2007, 14:27    Titel: Antworten mit Zitat

Fallen hat Folgendes geschrieben:
Wenn du das so schon benutzen willst dann solltest du wohl noch ein -1 dazu schreiben. Zum testen könnte 0 auch reichen.
Wo sollte das stehen ?

Fallen hat Folgendes geschrieben:
Bringt dir AFAIK absolut nichts da dir die Methode EnumAdapterModes diese Struktur füllt.

Aber die Methode könnte dann doch jeweils nur eine Auflösung ausgeben.
Ich dachte mit der kann man eine Auflösung im D3DDISPLAYMODE testen.
Kannst du vielleicht mal den vollständigen Code von dieser Funktion posten, bevor wir uns noch ewig lang aneinader vorbeireden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 06.02.2007, 11:37    Titel: Antworten mit Zitat

Ein vollständiges Beispiel dazu findest du in deinem DX-SDK:

*\Microsoft DirectX SDK\Samples\C++\Common\DXUTenum.cpp
*\Microsoft DirectX SDK\Samples\C++\Common\DXUTenum.h

Der Stil ist zwar mehr als mies aber dort solltest du alles finden können.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum