JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Vollbild ohne Skalierung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
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

BeitragVerfasst am: 02.06.2007, 14:23    Titel: Vollbild ohne Skalierung Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 02.06.2007, 14:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 02.06.2007, 14:57    Titel: Antworten mit Zitat

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 Neutral
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 02.06.2007, 16:09    Titel: Antworten mit Zitat

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 Wink
_________________
"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
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 02.06.2007, 23:16    Titel: Antworten mit Zitat

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 Wink


Ich glaube. Very Happy

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.06.2007, 00:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 03.06.2007, 10:39    Titel: Antworten mit Zitat

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 Very Happy
Ok, ist jetzt aber auch net die schwierigste Sache Very Happy

Vielen Dank für den hinweis jonathan, ich werd mal MSDN besuchen *g* Thumb Up
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 04.06.2007, 10:51    Titel: Antworten mit Zitat

öhm - hehe :X
irgendwie wühle ich mich durch MSDN, aber kann damit nicht viel anfangen Neutral

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 04.06.2007, 14:16    Titel: Antworten mit Zitat

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 Wink
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 04.06.2007, 14:54    Titel: Antworten mit Zitat

oh... Embarassed doch das hab ich, bin da aber tatsächlich noch nicht *weiterles*
ich meld mich nochmal wenn ich da bin Very Happy
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.06.2007, 17:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 06.06.2007, 16:01    Titel: Antworten mit Zitat

hmm mir fällt grad was auf Very Happy

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? Question
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 06.06.2007, 16:19    Titel: Antworten mit Zitat

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' Arrow 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 06.06.2007, 16:45    Titel: Antworten mit Zitat

oh ähm @"die großen spiele" == Age of Empires, Dark messiah und so - also die profispiele Very Happy

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 06.06.2007, 17:12    Titel: Antworten mit Zitat

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
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 -> DirectX, OpenGL 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