Du bist nicht angemeldet.

  1. Übersicht
  2. » Fehler / Bugs
  3. » windows screen scale factor
  4. » Eine Antwort schreiben

Eine Antwort schreiben

Schreibe deinen Beitrag und versende ihn
Beitragsoptionen
Bist Du ein Mensch oder ein Roboter ?

Verifizierung, dass diese Aktion durch eine reale Person vorgenommen wird und nicht von einem Programm.

Zurück

Themen-Übersicht (Neuester Beitrag zuerst)

Ronny
19.04.2025 16:11

Das Spiel wird eigentlich "high-DPI-aware" kompiliert.

Ich kenne von Windows eigentlich mehr, dass man die Texte usw. auf 125% skaliert - das ignorieren wir (einfacherweise - bzw weils einfach nicht vorgesehen ist) im Spiel.
Bei Dir klingt es aber danach, als wenn irgendwie der Inhalt vom Spiel skaliert wird, das "Fenster" aber nicht. Davon habe ich noch nicht gehoert.



Mal kurz als "dumme Idee": Sollte es im Vollbildmodus nicht "gross genug" sein, dass keine Skalierung erforderlich ist - ich vermute im "exklusiven Vollbildmodus" wird auch die Windows-OS-125%-Skalierung nicht anspringen (ist ja dann Sache des Spiels).


Weiterhin laesst sich im Fenstermodus auch die genutzte Fensteraufloesung anpassen - leider skaliert das momentan noch "unschoen" (Schriften usw.). Das ist einer der naechsten Punkte, die ich fuer die Engine angehe (bzw vor Monaten schon mal einen Branch dafuer anfing aber dann andere Dinge/Features/Fixes priorisieren musste).


---

Kannst Du mal schauen, ob der Wechsel von Direct3D auf OpenGL (oder andersherum) eine Auswirkung hat? Mir ist die "Ingame"-Skalierung ausgeloest durch "Windows" noch nie untergekommen.


bye
Ron

bol
19.04.2025 06:45

Hallo

als jemand, der noch das original auf dem Amiga spielte bin ich jetzt kurz vor 50 Jahre alt.
Da lassen die Augen schonmal nach und ich habe in Windows den screenscale auf 125% gestellt.
Das spiel berücksichtigt dies jedoch nicht, sodass 25% des Spielfensters unten verschwindet und rechts vermutlich dann auch.

Ich weiß aus eigener Erfahrung, dass es beim programmieren lästig ist, aber vielleicht hat eure Engine ja eine native Unterstützung, die nur eingeschaltet werden muss.
Ansonsten kann man unter c++ den screenscale factor wie folgt bestimmen und einfach an alle positionsangaben "dranmultiplizieren":

    POINT temp = { 0,0 };
    HMONITOR primaryHandle = MonitorFromPoint(temp, MONITOR_DEFAULTTOPRIMARY);
    UINT dpiX, dpiY;
    HRESULT temp2 = GetDpiForMonitor(primaryHandle, MDT_EFFECTIVE_DPI, &dpiX, &dpiY);
    double scalingFactor = dpiY / 96.0;
    //ShowMessage(scalingFactor);