|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 02.06.2007, 14:23 Titel: Vollbild ohne Skalierung |
|
|
Wie ist es möglich, einen Vollbildmodus hinzubekommen, ohne das die Grafiken skaliert werden auf die größere Auflösung?
Also: Ich habe eine Auflösung von 1280x960. Mein Projekt hat eine Auflösung von 1024x768. Wenn ich Volldbild per PParams.Windowed False mache, dann wird alles automatisch "vergrößert".
Ich hätte aber lieber einen Schwarzen Rand um das Spiel, als das es dann skaliert wird.
Was jedoch erwünscht wäre: Startet einer mit einer Auflösung von 800x600 das Spiel, das es dann "verkleinert" wird (Falls das überhaupt auch schon bei windowed = false geht, habs noch net mit einer niedrigeren Auflösung als 1024xY getestet).
Ist sowas möglich? Und wenn ja: wie? _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt
Zuletzt bearbeitet von Asto am 03.06.2007, 10:44, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.06.2007, 14:45 Titel: |
|
|
Dies sollte über die Projektions Matrix lösbar sein. Schaue mal in der DX Doku unter:
D3DXMatrixPerspectiveOffCenterLH (und ähnliche)
Wenn du mit einer Perspektivischen Camera arbeitest.
oder:
D3DXMatrixOrthoLH (und ähnliche)
Wenn du eine Ortho Camera benutzt.
Bei diesen Funktionen kannst du die Höhe und Breite des Blickvolumens angeben, wenn du da jedesmal die Grösse deiner Auflösung angibst solltest du erreichen was du willst.
Natürlich solltest du nicht vergessen die Matrix auch dem Device zu übergeben.
CPP: | void foo:OnResolutionChange(Resolution ScreenRes)
{
D3DXMATRIX ProjMatrix;
::D3DXMatrixOrthoLH(&ProjMatrix, ScreenRes.Width, ScreenRes.Height, NearPlane, FarPlane);
this->get_Device()->SetTransform(D3DTS_PROJECTION, &ProjMatrix);
} |
Was bei dir near und FarPlane sind musst du selber schauen. _________________ "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 |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 02.06.2007, 14:57 Titel: |
|
|
Vielen Dank für deine Antwort, aber ich vergaß zu erwähnen, das es ein 2D-Projekt ist, daer arbeite ich mit "keiner" Kamera, oder zählt das trotzdem zu kameras?
<<< noob :X
Grad kam mir die Idee: Bereich begrenzen, wenn auflösung größer als 1024 is und dann alle grafiken anders positionieren (x und y + breite des schwarzen bereichs).
Ist für 2D die Lösung oder? *kopfkratz* :X
Erst denken, dann fragen, sry _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt
Zuletzt bearbeitet von Asto am 03.06.2007, 10:44, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 02.06.2007, 16:09 Titel: |
|
|
GreatFlo hat Folgendes geschrieben: | Vielen Dank für deine Antwort, aber ich vergaß zu erwähnen, das es ein 2D-Projekt ist, daer arbeite ich mit "keiner" Kamera, oder zählt das trotzdem zu kameras? |
Glaub mir du hast eine Kamera _________________ "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 |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 02.06.2007, 23:16 Titel: |
|
|
Fallen hat Folgendes geschrieben: | GreatFlo hat Folgendes geschrieben: | Vielen Dank für deine Antwort, aber ich vergaß zu erwähnen, das es ein 2D-Projekt ist, daer arbeite ich mit "keiner" Kamera, oder zählt das trotzdem zu kameras? |
Glaub mir du hast eine Kamera |
Ich glaube.
Nun gut, aber was is das denn dann für eine bzw. is die "Steuerbar"!?
Ich habe in MSDN geguckt, aber deine Beispiele passen da ja irgendwie nicht zu dieser 2D Kamera oder? *grübel* _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt
Zuletzt bearbeitet von Asto am 03.06.2007, 10:44, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.06.2007, 00:46 Titel: |
|
|
Es heißt ja nicht Kamera. Du musst nach den Matrizen suchen.
Es müsste eine WorldMatrix eine ViewMatrix und eine ProjectionMatrix gebne. In deinem Falle wirst du wohl die ProjectionMatrix anpassen müssen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 03.06.2007, 10:39 Titel: |
|
|
ah und ich hatte mich immer gefragt, warum programmierung immer so viel mit mathe zu tun haben soll (außer logischem denken). Aber jetzt mal mit Matrizen rechnen
Ok, ist jetzt aber auch net die schwierigste Sache
Vielen Dank für den hinweis jonathan, ich werd mal MSDN besuchen *g* _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 04.06.2007, 10:51 Titel: |
|
|
öhm - hehe :X
irgendwie wühle ich mich durch MSDN, aber kann damit nicht viel anfangen
auch MSDN liefert nicht so arg viele Infos mit denen ich was anfangen könnte.
Hat jmd. evt. ein Beispiel an der Hand, wie ich das Handhaben muss, bzw wie ich erstmal eine Matrix bekomme? MSDN liefert unter Matrix3D auch nichts für mich versändliches :X _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 04.06.2007, 14:16 Titel: |
|
|
Hast du nicht das (JLI-)Buch zum Forum?
Vielleicht bist du ja noch nicht ganz durch, aber wenn in DirectGraphics eingeführt wird, wird das mit den Matrizen (jedenfalls die Verwendung) ein bisschen erklärt. (Bei Version 2 des Buches ist das Kapitel 27)
Ansonsten würde helfen, wenn du uns mitteilen würdest, was genau für Informationen du zu Matrizen brauchst _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 04.06.2007, 14:54 Titel: |
|
|
oh... doch das hab ich, bin da aber tatsächlich noch nicht *weiterles*
ich meld mich nochmal wenn ich da bin _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.06.2007, 17:41 Titel: |
|
|
Ich würde ja einfach mal in die DX Doku schauen. Bin mir nicht sicher ob die auch in dem MSDN mit drin ist, aber die Doku hat auf jeden Fall den Vorteil, dass es NUR um DX geht. Somit schränkt sich die Anzahl möglicher falscher Treffer ein. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 06.06.2007, 16:01 Titel: |
|
|
hmm mir fällt grad was auf
Also wenn ich eine Auflösung von 1280xY hab, und das Spiel eine von 1024xY, dann vergrößert der ja alles auf 1280xY
Hmm die großen Spiele ändern ja solange die Auflösung des gesamten Desktops, oder irre ich mich?
Ist das einfacher zu lösen oder muss ich da auch wieder viele Dinge beachten? _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 06.06.2007, 16:19 Titel: |
|
|
also bei mir ist das so, dass sich bei einer Auflösung von 1280x800 alle Spiele, die diesen Modus nicht explizit behandeln, als 1024x768 o.ä. ausführen und meine Grafikkarte den Inhalt einfach in eine 1280er Auflösung "hineinvergewaltigt' die Grafiken sind dann eben alle etwas in die Breite gestreckt. D.h., dass du entweder die bestimmten Auflösungen einzeln behandeln musst, oder dich auf die meist genutzten festlegst. Bei Letzterem macht dir GraKa das dann eben so, wie gerade beschrieben...
Gruß DXer |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 06.06.2007, 16:45 Titel: |
|
|
oh ähm @"die großen spiele" == Age of Empires, Dark messiah und so - also die profispiele
die ändern ja die gesamte auflösung des desktops und skalieren nicht das bild oder? _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 06.06.2007, 17:12 Titel: |
|
|
hä?
Also. Bei Vollbild stellt DX die Auflösung des Bildschirms (nicht des Desktops, der ist nicht wirklich aktiv, sonst wärs ja net Vollbild) um. Entweder der Bildschirm und die Grafikkarte kann das darstellen (bin mir grad net ganz sicher, ob man Grafikmodi einstellen kann, die zwar die GraKa kann, aber der Bildschirm net, glaub aber net, könnte der Treiber ja regeln), oder das Device kann nicht erstellt werden.
Zum Beispiel einige Spiele, die ich auf meinem Lappi spielen wollte, der 1280*800 hat, und das Spiel wollte 1280*1024, das schmierte dann beim starten eben ab, weil das Device so nicht erstellt werden kann.
Der Vorteil von Direct3D ist, das die Bildschirmauflösung nicht mit der Grafikauslösung übereinstimmen muss. Wenn man eine orthogonale Projektionsmatrix hat, wird alles passend skaliert, man kann im Programm mit 1024x768'ger Auflösung arbeiten und danach auch alle Elemente platzieren. Wenn man jetzt die Bildschrimauflösung umstellt, und die Matrizen geschickt setzt, skaliert DX diese 1024x768 Punkte auf jede beliebige, einstellbare Bildschirmauflösung.
Das coole ist, dass das Programm davon nichts merken muss, bei ihm bleibt 1024x768 immer unten links. Die Grafiken verlieren zwar an Qualität, aber es ist eine schnelle und einfache Lösung, um alle möglichen Auflösungen zu unterstützen.
Destkopauflösung hat ja nur im Windowed Mode eine Rolle zu spielen, aber da füllt das Fenster entweder nicht den gesamten Bildschirm aus, oder es ist nur ein Teil des Bildes zu sehen.
DDraw müsste IMHO auch die Aufösung umstellen, sicher bin ich mir aber nihct. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
|
|
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
|