EnumAdapterModes



  • Hi Leute
    Ich kann mir nicht helfen, aber die Funktion IDirect3D9::EnumAdapterModes listet mir einfach sämtliche, der Menschheit bekannte Auflösungen und Widerholraten auf. Ich bin mir z.B. absolut sicher, dass meine GeForce eine Auflösung von 320x200 32Bit 72Hz in keiner Art und Weise unterstützt !!!

    Hier mal den Code:

    //Enuerate the available Display Modes
    int cFmt = pD3D->GetAdapterModeCount(D3DADAPTER_DEFAULT,D3DFMT_X8R8G8B8);
    D3DDISPLAYMODE d3ddm;
    std::string rs;
    char pBuf[8];
    
    for(int i=0;i<cFmt;i++){
     pD3D->EnumAdapterModes(D3DADAPTER_DEFAULT,D3DFMT_X8R8G8B8,i,&d3ddm);
     itoa(d3ddm.Width,pBuf,10);
     rs += pBuf;
     rs += "x";
     itoa(d3ddm.Height,pBuf,10);
     rs += pBuf;
     rs += " ";
     itoa(d3ddm.RefreshRate,pBuf,10);
     rs += pBuf;
     TextOut(ps.hdc,0,+i*16,rs.c_str(),rs.length());
     rs = "";       
    }
    

    Danke schon mal, Gruss Ishildur

    P.S.
    Vergesst nicht, dass dies DirectX9 ist, es ist in beiden Funktionen je ein Parameter hinzugekommen. Mann kann/muss nämlich auf ein bestimmtes Format hin enumerieren !



  • Also meine GeForce 4 TI kann laut DirectX Caps Viewer 320*200 bei 72 Hertz, also wird es deine wohl auch können. Wieso auch nicht?

    ChrisM



  • Tja, du hast recht !
    Ich habs eben ausprobiert, spricht eine Fullscreen Application gemacht mit der Auflösung 320x200 und es hat tatsächlich geklappt ! Ich dachte bisher immer, dass eine aktuelle Grafikkarte eine mindestauflösung von 640x480 hat !

    Gruss Ishildur



  • Original erstellt von Ishildur:
    **Tja, du hast recht !
    Ich habs eben ausprobiert, spricht eine Fullscreen Application gemacht mit der Auflösung 320x200 und es hat tatsächlich geklappt ! Ich dachte bisher immer, dass eine aktuelle Grafikkarte eine mindestauflösung von 640x480 hat !

    Gruss Ishildur**

    lol 🙂



  • Nein, haben sie nicht, ich hab mein Programm auch schon auf 320*240 laufen lassen. 😃
    Ich sogar nützlich, wenn man auf einem mega-lahmen Rechner UT2003 spielen will 😃 😃

    ChrisM



  • Mit 4x Multi-Sampling kann man ein Spiel ohne Weiteres unter 320x240 laufen lassen. Wenn die Grafiken nicht ganz so detailliert sind, sieht es dann sogar schöner aus, weil man die einzelnen Polygone nicht so sieht.



  • @tomas riker

    LOL!!!

    dann hast du aber nur eine sichtweite von drei meter, weil alles was weiter weg ist nur mit zwei oder drei pixeln dargestellt werden kann!

    320x240 ist out!

    ich hab 1600x1200 und das ist mir immer noch zu wenig!



  • Nein, mit 4x Multi-Sampling eben nicht! Je nach Implementierung entspricht das dann einer Auflösung von 1280x960, die dann auf 320x240 runtergerechnet wird. Der positive Nebeneffekt ist, dass die Kanten stark geglättet werden.

    1600x1200 soll noch zu niedrig sein? Von solch hohen Auflösungen hat man doch gar nichts mehr (höchstens wenn Du ein Designer bist und wahnsinnig viel Platz auf dem Desktop brauchst). Außerdem wird es bei 1600x1200 doch schon arg flimmern (oder schafft Dein Bildschirm da etwa noch 100 Hz?).

    [ Dieser Beitrag wurde am 12.01.2003 um 19:20 Uhr von TomasRiker editiert. ]



  • 75 Hz sind genug.
    und bei höheren auflösungen aknn man auch mehr details sehen, man sollte aber nen kompromiss finden zwischen auflösung und fps.



  • Ab einer gewissen Auflösung hört das mit den "mehr Details" auf. Wenn die Modelle nicht viele Polygone haben, dann sehen sie mit 1600x1200 genauso aus wie mit 800x600. Meiner Meinung nach sehen sie dann sogar schlechter aus, weil man die Polygone noch deutlicher erkennen kann.



  • @tomas riker

    tut mir leid, aber du scheinst nicht viel ahnung zu haben! je niedriger die auflösung ist, umso weniger pixel hat man, um objekte darstellen zu können, und da spielt es keine rolle ob das bild vorher mit 1000x1000 oder 100000x100000 pixel vorgerechnet wurde (->also egal ob 2x, 4x, 8x oder 100x antialiasing), du hast am schluss nur eine auflösung von 320x240 und mehr nicht! und bei einer auflösung von 320x240, hat man eben nur so wenig pixel, das von einem objekt nicht mehr viel übrig bleibt, insbesondere wenn es zu weit weg ist. (selbst wenn sich die berechneten pixel zu 99,9999999999% an der exakten mathematisch position befinden)

    aber das sollte man eigentlich wissen!

    hast du mal counter-strike bei einer auflösung von 320x240 gespielt? da bist du tot bevor du deinen gegner überhaupt sehen kannst. weil sein kompletter körper höchstens aus 10x10pixel besteht. und das reicht nicht aus um einen menschen detailiert darzustellen. und erst recht nicht um ihm einen schuss genau zwischen die augen zu verpassen, weil sein kopf nur aus einem einzigen pixel (oder zwei) besteht.

    als programmierer (und buchautor) solltest du (eigentlich) wissen, das ein objekt mit >100.000 polygonen und sehr vielen kleinen teilstücken mit einer auflösung von 320x240 punkten nicht mehr ohne verluste dargestellt werden kann!!! (?!?)

    ausserdem sollte man, um die qualität der grafik zu erhöhen, auch große texturen benutzen. bei den momentanen grafikarten ist 256x256 das beste format. bei einer auflösung von 320x240 machen aber so große texturen keinen sinn, da sie in voller größe nie dargestellt werden können (oder fast nie). die polygone haben bei dieser auflösung gerade mal ausmasse von 20x20 oder 30x30 pixel (insbesondere die, die weiter weg liegen, und den grosßteil der landschaft ausmachen), und dann eine 256x256 texture zu verwenden wäre reine verschwendung.

    ich weiss nicht was du für spiele spielst und was du selber für grafiken erstellst/benutzt, aber mit ein wenig erfahrung sollte man wissen, das 320x240 wirklich nicht ausreicht um eine grafik darzustellen, selbst wenn man 1000x antialiasing nimmt und 8x anisotrope filterung. 320x240 ist einfach zu wenig.

    das ist so als ob man versuchen würde mp3-dateien mit einer auflösung von 20 oder gar 10 Kbps abzuspielen. da beliebt von deinem sound nicht mehr viel übrig ausser digitaler brei. 🙂

    p.s.: mein monitor schafft 85 Hz bei 1600x1200 das ist vollkommen ausreichend, und meine grafikarte ist eine asus gf4 ti4600.



  • Warte mal ab, TomasRiker wird dich schon noch vom Gegenteil überzeugen können. 😉



  • sorry, glaube ich kaum, denn da gibt es nix zu überzeugen!

    ich habe sowas auch schon selber ausprobiert und weiss genau das es nicht stimmt. ausserdem ist es viel zu trivial um da noch weiter drüber zu diskutieren, denn man kann in einem raster mit 320x240 pixel (mit 24 bit farbtiefe) "nur" 1843200 unterschiedliche zustände speichern und mit 1600x1200 eben 46080000 das ist 25 mal soviel! wer dann sagt, das 1600x1200 nichts bringt im vergleich zu 320x240 oder 800x600, der hat einfach unrecht. das bild ist schärfer, man kann weiter sehen, und man kann dadurch mehr details erkennen. ausserdem; man kann bei 1600x1200 auch noch 2x oder 4x antialiasing anschalten!

    ich kann tomas riker nur in einem punkt recht geben, und zwar, daß man ein spiel bei 320x240 spielen KANN (das soll heissen, daß es rein praktisch möglisch ist, da 320x240 einem genug bildinformation liefert um es gerade noch spielen zu können, mehr aber nicht). fragt sich nur ob das genausoviel spass macht wie mit 1024x768 oder 1600x1200, und ich sage NEIN! ich habe ja schliesslich früher auch doom und dukenukem3d gespielt (mit 320x240 und mit 1024x768), und das nicht zu wenig! heute spiele ich vorwiegend counter-strike und unrealtournament mit einer auflösung von 1600x1200 und wenn ich dann nochmal runterstelle auf 320x240 dann brauche ich keine theoretischen erkennetnisse für sowas; mein normaler menschenverstand sagt mir einfach, daß es sich damit nicht spielen lässt!!!



  • Sorry, ich konnte nicht früher antworten.

    OK, OK, 320x240 ist vielleicht wirklich ein bisschen zu niedrig. Dafür sind Deine "> 100.000 Polygone" aber auch ein bisschen zu hoch.
    Übrigens: viele N64-Spiele arbeiten mit 320x240!

    Mir kommt es eben nicht auf protzig hohe Auflösungen an, sondern ich finde es halt schöner, wenn alles fein glatt aussieht - also beim Multi-Sampling.
    Dort reichen dann auch schon die niedrigen Auflösungen und Multi-Sampling mit 1600x1200 macht wenig Sinn und wird bei vielen Karten auch gar nicht mehr unterstützt (oder nur noch eingeschränkt; außerdem würde es dann wohl wirklich unerträglich langsam). Wenn Du diese Meinung nicht teilst, bittesehr. Deswegen gleich so beleidigend zu werden, dazu gibt es gar keinen Grund.

    Meinetwegen mach's mit 640x480 oder 800x600. Stelle 4x oder 9x Multi-Sampling ein und Du wirst sehen, was ich meine. Dagegen kommen die nächst höheren Auflösungen ohne Multi-Sampling nicht an.

    Auf jeden Fall bin ich der Ansicht, dass Auflösungen von mehr als 1600x1200 (noch) gar nichts bringen. Dann müsstest Du die Modelle auch noch detaillierter machen, weil Du sonst die ohnehin schon großen Polygone noch größer machen würdest. Und das fällt bei hohen Auflösungen sehr unangenehm auf! Dann lieber niedrigere Auflösungen, bei denen man die Polygone nicht ganz so leicht erkennen kann. Ich hoffe, Du verstehst, was ich meine und haust mich nicht gleich wieder in die Pfanne. 😉

    [ Dieser Beitrag wurde am 13.01.2003 um 15:53 Uhr von TomasRiker editiert. ]



  • ich hau niemanden in die pfanne! und ich bin auch nicht beleidigt!

    ich habe mir nur angewöhnt mich hier im forum klar und deutlich auszudrücken! ich habe (eigentlich) alles sehr friedvoll gemeint und meine es natürlich auch immer noch. mich hat nur deine auffassung sehr verwundert, insbesondere weil du einiges an erfahrung besitzt. ich wollte dich, wenn überhaupt, nur aufklären. ich glaube, das du das thema falsch oder nicht ganz richtig siehst, da die realität einfach anders ist! (kann ja sein, das du nicht so viele spiele spielst und dich auch nicht so sehr mit 3d-design sondern mehr mit der programmierung beschäftigst, da kann sowas durchaus passieren)

    wenn man nur einen würfel darstellt dann reicht 320x240 mit 4x antialiasing um ihn detailiert darzustellen. aber die meisten spiele haben mehr polygone als ein würfel und kommen auch schon an die 100.100 heran (so unrealistisch ist diese zahl gar nicht, bei neuen spielen).

    ich würde dir gerne noch ein kleines beispiel geben, an dem man sehr gut erkennen kann, dass 1600x1200 selbst bei spielen durchaus notwendig ist.

    stell dir einen raum vor in dem mehrere stühle und tische stehen auf denen gläser und teller und blumen stehen. stell dich 10-15 meter von diesem raum entfernt hin und schau dir die objekte an mit einer auflösung von 320x240. die beine der stühle und tische werden dann maximal mit 1-2 pixel breite dargestellt, die gläser/teller haben vielleicht auch nur eine größe von 5x5 pixel. wie will man bei den stuhl-/tischbeinen eine holzstruktur erkennen, die mit einer 32x32 (oder höher) textur beschrieben wird? du hast ja nur 2 pixel (wenns hochkommt 3) um die stuhl-/tischbeine darzustellen. und bei 2 pixel bleibt von der holzstruktur nicht mehr viel übrig, ausser ein hellbrauner und ein dunkelbrauner streifen! genauso sieht es bei den gläsern und tellern aus, du wirst von denen nicht mehr viel erkennen und erst recht nicht welche struktur sie eigentlich besitzen.

    und jetzt stell dich mal nicht 10-15 meter davon entfernt hin sondern 50 meter, dann hast du nur noch pixelbrei und erkennen kann man da nichts mehr!

    erst wenn du auflösungen von 1280x1024 oder 1600x1200 hast, dann bestehen die stuhl-/tischbeine aus ca. 10 pixel breite und man kann ihre konturen erkennen und vorallem auch das muster der textur, mit der sie dargestellt werden. und das finde ich erhöht die qualität der darstellung enorm! und für mich persönlich sogar mehr als glatte kanten. was nützt mir ein objekt, das sehr glatte kanten hat, von dem ich aber nicht weiss, was es ist und wie es aussieht? (inbesondere in einem spiel. wenn da ein alien auf dich zukommt und du denkst es ist ein wissenschaftler, dann lebst du nicht mehr lange)

    bei ganz einfachen/alten spielen, hat man solche detailreichen objekte nicht. aber bei neueren schon, z.b. das spiel mafia.

    kann man bei einer auflösung von 320x240 bei einer entfernung von 50-100 meter durch ein fenster eines autos erkennen wieviele personen drin sitzen? ich glaube kaum das man das kann. und das ist in diesem spiel aber durchaus notwendig!

    deine ausssage, dass multisampling bei hohen auflösungen nicht/nicht mehr oder teilweise unterstützt wird, habe noch nie gehört und ist glaube ich auch nicht ganz korrekt. es gibt keinen grund sie nur bei niedrigen auflösungen zu unterstützen. schliesslisch kann man grafikkarten auch für andere dinge ausser spiele benutzen. z.b. um grafiken zu rendern. und warum sollte man da nicht 1600x1200 mit 4x antialiasing benutzen? ist doch egal ob es langsamer ist.

    ausserdem muss ich dir leider mitteilen, das 4x antialiasing und 1600x1200 gar nicht so langsam ist. insbesondere bei alten spielen. ich spiele counter-strike mit 1600x1200 und 4x und habe im prinzip immer 85 fps ausser es tummeln sich gerade 31 leute vor mir rum.

    das N64 mit 320x240 arbeitet/arbeiten kann ist genau der grund warum ich mir nie eine solsche konsole anschaffen würde. beim pc ist technisch gesehen einfach viel viel besser; AUSSER das der grafikbus zu klein ist. die ps2 hat z.b. einen 768bit bus der die cpu, gpu und das ram verbindet, ein pc mit agp hat nur 32bits.

    deshalb ist es auch wichtig, das man bei systemen mit agp-bus viele objekte ins vram lädt, damit sie nicht mehr bei jedem frame über den "kleinen" 32bit agp-bus müssen.

    aber ich persönlich ich habe lieber eine hohe auflösung als eine powermaschine die man nicht ausreizen/ausnutzen kann.

    wenn du spiele mit 320x240 spielen möchtest, dann kannst du das gerne machen. am besten gegen mich! denn dann ist mein sieg so gut wie sicher 🙂



  • Na, das hörte sich doch gleich viel freundlicher an 😉

    Ich hatte ja schon gesagt, dass 320x240 ein wenig übertrieben war. 640x480 sollte es dann schon sein.

    Das mit den hohen Auflösungen und nicht mehr unterstütztem Multi-Sampling habe ich mir nicht einfach so ausgedacht. Meine alte GeForce 2 unterstützte z.B. ab 1024x768 überhaupt kein Multi-Sampling mehr.

    Ich finde, dass man wirklich nicht nur nach der Auflösung urteilen sollte und wer das Spiel "Zelda: Ocarina Of Time" für das N64 nicht gespielt hat, der hat wirklich ein grandioses Spiel verpasst! Auch wenn es nicht mit vierundsechszigtausend mal achtundvierzigtausend Milliarden hoch zehn Pixeln Auflösung läuft. 😉

    Im Übrigen hast Du recht: ich programmiere mehr als ich spiele.



  • vermutlich kann deine alte karte kein AA, weil sie zu wenig ram hat. wenn sie nur 16 mb hat wird es wahrscheinlich daran liegen:

    1024*2 (2xaa) x 768*2 (2xaa) *4(32bit) + 1024*x768*4 (32bit backbuffer) + 1024*x768*2 (16bit zbuffer) = 12.582.912 + 3.145.728 + 1.572.864 = 17.301.504 Bytes

    meistens liegt es daran, das die karten zu wenig ram haben.

    meine gf4 kann 1600x1200*4xAA und hat 128 mb ram


Anmelden zum Antworten