hi alle,
ich habe zu test zwecken mal ein Quad erzeugt als ich dann mal die Fenstergröße verändert habe ist das Quad kleiner und größer geworden. Ich habe aber ein Programm das mit Renderpasses arbeitet und indem die Größe sehr wichtig ist, da es mit CopySubTexImage() kopiert wird. Kann ich das relative irgendwie ausschalten?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wie erzeugst du deine Projektion (normalerweise im OnResize oder ähnlichem)? Mit gluPerspective oder glOrtho? Ich vermute, dass du die Perspective-Variante verwendest, denn die passt sich dem Seitenformat an. Wenn du Ortho verwendest, hast du den Vorteil, dass deine Koordinaten auch Pixel sind, nicht "Weltkoordinaten".
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Man kann auch die Viewportgröße ändern, was bei den normalen OnResize-Varianten ja auch gemacht wird. Die Perspektive ist hauptsächlich für das Seitenverhältnis zuständig, wenn man nicht grade ständig den Sichtwinkel ändert. Gerade bei Renderpasses wo in Texturen gezeichnet wird, sollte man vorher immer den Viewport an die Größe der Textur anpassen. Wenn man zB die Perspektive unangetastet lässt, kann man auch ein recheckiges Bild in eine quadratische Textur kopieren. Zu beachten ist aber das die Viewportgröße nicht größer als das Fenster sein darf/sollte, da alles außerhalb nicht gezeichnet wird. Eine Abhilfe dafür können Pixelbuffer schaffen.
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Mori,
wenn du willst, dass dein Quad immer dieselbe Grösse unabhängig von der Fenstergrösse hat, mußt du deine Projektionsmatrix beim Ändern der Fenstergrösse anpassen, z.B. gluOrtho2D(0, 0, win_width, win_height) ( eine Einheit = 1 Pixel ).
Viele Grüße
dj3hut1
_________________ Wenn Gauß heute lebte, wäre er ein Hacker. Peter Sarnak, Professor an der Princeton University
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich denke Schläfer hat das schon vollkommen richtig gesagt. Aber ich spiele gerade mal Papagei damit das nicht untergeht. Zum Rendern in eine Textur ist es nötig, dass du die Größe der Textur als Viewport einstellst. Sonst könntest du nicht passend in die Textur zeichnen. Und sobald du eine feste Größe mit glViewport eingestellt hast bleibt das Bild auch immer so. Also die Objekte innerhalb bleiben dann gleich groß.
Wenn du anschließend wieder in dein Fenster zeichnen willst, dann musst du glViewport wieder an die Größe deines Fensters anpassen.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.