Laden...

MonoGame: Autoskalierung abstellen

Erstellt von Triss vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.678 Views
T
Triss Themenstarter:in
6 Beiträge seit 2016
vor 7 Jahren
MonoGame: Autoskalierung abstellen

Hallo,
Ich bin vor kurzem von XNA auf MonoGame umgestiegen und stehe vor einem Problem. Wenn ich von meinem Spielfenster die Größe ändere, wärend das Spiel läuft, skaliert MonoGame automatisch die ganze Grafik und verzieht damit alles. 🙁
Vielleicht hatte einer von euch schon mal so ein Problem oder hat eine Ahnung, woran das liegen konnte. Ich möchte einfach nur diese Autoskalierung abstellen.

Tristan

Q
2 Beiträge seit 2017
vor 7 Jahren

Hallo 👍,

wie man es abschaltet kann ich dir leider nicht sagen, jedoch hatte ich mal ein ähnliches Problem und es lag daran, dass DirectX verwendet habe und nicht OpenGL. Bei der Verwendung mit DirectX wurden die Grafiken automatisch skaliert und bei der Verwendung von OpenGL nicht. Jedoch habe ich schwammig in Erinnerung, dass es etwas mit den Eigenschaften "PreferredBackBufferWidth" und "PreferredBackBufferHeight" zutun hatte. Wenn ich richtig liege, musste ich nur das "Window.ClientSizeChanged"-Ereignis abonnieren und dort jedes mal die Eigenschaften am "Window.ClientBounds" anpassen.

Edit: Du kannst natürlich auch einfach die Skalierung des Fensters verhindern: "Window.AllowUserResizing = false" - Aber das war ja nicht die Frage🙂

Gruß
Quoxy

T
Triss Themenstarter:in
6 Beiträge seit 2016
vor 7 Jahren

Danke für deine Antwort!
Das mit dem Event habe ich probiert aber dann wird eine Exeption geworfen, weil das Programm dann in einer Schleife von andauerndem ClientSizeChanged-Event festhängt. Ich probiere dann das mit OpenGL aus.

Tristan

Q
2 Beiträge seit 2017
vor 7 Jahren

Hallo Triss,

da "GraphicsDeviceManager.ApplyChanges()" nochmal das Ereignis auslöst, musst Du das verhindern:


private bool _ResizeWindow = false;

private void ClientSizeChanged(object sender, EventArgs e) 
{
    
  _ResizeWindow  = !_ResizeWindow;
  
    if(_ResizeWindow) 
    {
      //Änderung der PreferredBackBufferWidth/Height
    }

}


Ungetestet, aber sollte so ähnlich funktionieren. (Bin noch bei der Arbeit, also kann ich auch nicht schauen, wie ich das mal gelöst habe)

Gruß
Quoxy

T
Triss Themenstarter:in
6 Beiträge seit 2016
vor 7 Jahren

Hab jetzt zu OpenGL gewechselt. Dieser Fehler ist damit behoben. Danke 👍