Auflösung ändern Position von Texturen



  • Ich hab da mal eine grundsätzliche Frage zur Spieleprogrammierung. Unzwar verstehe ich noch nicht so ganz was genau passiert wenn ich die Auflösung eines Renderers änder. Da das Bild ja größer wird hat man ja das Problem, wenn Texturen absolut positioniert sind, dass sie sich verschieben. Demnach müssen ja die Positionsangaben irgendwie angepasst werden. Wie genau nennt sich das oder wonach muss ich da im Internet suchen, wenn ich mehr wissen will.

    Ich hatte mir da schon Überlegungen zu gemacht. Irgendwo habe ich gelesen, dass man einen Faktor festlegen könnte. Der Faktor wäre bei Originalgrößen dann genau 1. Wenn ich die Auflösung runter oder hochschraube müsste ja jede Position mit diesem Faktor multipliziert werden. Ist das nicht irgendwie zu aufwending? Gibt es da etwas mit OpenGl/SDL2 das mir das irgendwie abnimmt oder vereinfacht?

    Bin in dem Punkt etwas ratlos und meine Überlegung finde ich irgendwie unschön. Ich beziehe mich hier gerade nur auf 2D Grafiken.


  • Mod

    bei 2d pixel bildern wird das per hand angepasst oder es gibt eine 'layout engine'. deswegen war bei alten spielen oft so, dass sie nur wenige aufloesungen unterstuetzten. konnte also sein dass du nur in 1024x768 spielen kannst, obwohl deine hardware 800x600 und 1280x1024 kann.

    moderne spiele haben meistens keine vordefinierten pixel-bilder, sondern vector graphik (z.b. benutzen einige spiele Scaleform, was flash basierend ist).

    "layout engine" ist dein keyword, bei UI. bei z.b. spielfeldern siehst du mehr oder weniger. manchmal verdoppelt man auch einfach die pixel (wenn du also von 640x480 auf 1280x720 wechselst, wird x verdoppelt, y wird auch verdoppelt aber oben udn unten was abgeschnitten).

    eine 100% zufriedenstellende loesung gibt es nicht.



  • 2D ist eigentlich auch nur ne Sonderform von 3D ! 🙂
    Wird halt alles auf eine Ebene projiziert, und selbst die Posis in der Ebene kann dir die 3d Engine rechnen.
    Das Stichwort ist die "ProjektionsMatrix" also das Konstrukt, was dir die 3d daten nach 2D für den Bildschirm (FrameBuffer allgemein, kann auch ne textur sein usw. )transformiert.
    Orthagonal und Perspektifisch sind dann die Stichwörter zum nachlesen.
    Und ja, nutzt man das, sind die Texture-Coordinaten nicht mehr absolut.
    Ausschlaggebend für die Quali ist aber dann hier dein Detailgrad, Qualität deines Bildmaterials (Texture Auflösung) und verwendetes Alaising.

    Ganz andere Schiene sind die GUI's aka Overlays ....
    Da sollt man sich bei modernen Anwendungen nicht mehr allein auf die Auflösung konzentrieren !!!
    DPI - Pixeldichte ist da das Stichwort ....
    Nix ist frustrierender als sich nen 40er 4K moni zu kaufen, nur um dann buttons zu bekommen die größer als deine tatstatur aufm Moni sind ...
    Oder nen super duper schnieckes Netbook mit retina Display um dann ne lupe zu brauchen ^^

    Einstellbar ist minimum, die DPI fürs erste Schätzen ausm OS Auslesen und verwenden ist besser ...
    Auch dafür gibts Libs, mit layout engines und jeglichen "Schmarren" für deinen bevorzugten Renderer (plain opengl, plain directX, Ogre, SDL, Unity .... uvam).

    Ciao ...


Anmelden zum Antworten