Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:15

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 10:48 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Moin,

ich möchte die Auflösung meines Viewports bzw Framebuffers verändern. Ich nutze ein Panel als DC. Also wird immer mit 100% (Panel.Width x Panel.height) gerendert. Gibt es eine Möglichkeit die Auflösung zu verringern und dann auf das Panel zu Stretchen?!

Mfg,
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 10:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Du kannst die Szene in ein FBO rendern und den FBO-Inhalt dann als Textur-Quad rendern und dabei strechen.

Wichtig ist das du dafür sorgst, dass das strechen per Hardware gemacht wird und nicht per Software. Sonst schlägt das nämlich ziemlich auf die Performance. ;)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 11:08 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
ach du Schreck, das sieht ja kompliziert aus...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 11:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Hm, du kannst auch die so setzen das du nicht die volle Bildschirmgröße ausnutzt, sondern eben nur die gewünschte Auflösung. Nach dem rendern kopierst du mit glCopyTexSubImage2D den aktuellen Framebuffer in eine Textur und renderst diese dann mit korrektem Viewport-Setting.

Das Problem dabei ist das intern ständig Buffer neu erzeugt werden müssen immer wenn du glViewport aufrufst. Darum das FBO...dabei bleiben die Buffer bestehen. Außerdem wird hier die Textur zweimal kopiert (einmal mit glCopy... und einmal beim rendern/strechen)

Eine Alternative zu glViewport wäre die Projektionsmatrix manuell zu manipulieren. In dem Fall brauchen die Buffer nicht neu erzeugt werden, weil sich die Größe des Framebuffers nicht ändert. Alles keine schöne Lösung...ich empfehle ein FBO.

Warum willst du eigentlich die Auflösung verringern?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 11:29 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
habe mir eben das Tut zu Framebuffer durchgelesen. Alles halb so wild denke ich. Ich will die Auflösung veringern, das Fenster meiner Software auf maximieren kann, somit ist das Panel fast so groß wie der Bildschirm, in dem Fall geht die CPU logischerweise nach oben... Da wäre es top wenn ich da wahlweise die Auflösung ein wenig runtersetzten könnte..


zu FBOs.
So wie ich das verstanden habe, müsste ich auch jedesmal wenn sich die Panelgröße ändert auch das FBO mit neuer Größe neu erstellen..
Also das Rendern in eine Textur ist ja im Tut erklärt, doch wie ich diese dann gestrecht auf den Bildschirm bringe weis ich noch nich..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 11:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
So wie ich das verstanden habe, müsste ich auch jedesmal wenn sich die Panelgröße ändert auch das FBO mit neuer Größe neu erstellen..

Genau. Aber da sich die Panelgröße ja vermutlich nicht ständig ändert sollte das kein Problem sein.

Zitat:
doch wie ich diese dann gestrecht auf den Bildschirm bringe weis ich noch nich..

Nach dem deaktivieren des FBO (durch binden des FBO mit der ID 0) hast du die Daten in einer normalen Textur. Einfach ein Vollbild-Quad mit dieser Textur rendern.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 16:35 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Thmfrnk hat geschrieben:
Ich will die Auflösung veringern, das Fenster meiner Software auf maximieren kann, somit ist das Panel fast so groß wie der Bildschirm, in dem Fall geht die CPU logischerweise nach oben... Da wäre es top wenn ich da wahlweise die Auflösung ein wenig runtersetzten könnte..


Die CPU-Auslastung hat (fast) nichts mit der Auflösung zu tun. Je höher die Auflösung, desto mehr Arbeit für die GPU - nicht CPU! Wenn du die CPU-Last senken willst, solltest du vielleicht lieber andere Maßnahmen ergreifen. Z.B.: Renderst du im Immediate-Mode (also mit glBegin und glEnd)? Das solltest du nicht tun, benutze stattdessen VBOs oder DisplayLists.

Gruß mrtrain


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 19:23, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 16:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn ich mich recht erinnere, muss die CPU auf die Grafikkarte warten, was zwar in dem Sinne keine Last ist, aber dennoch verbrauchte CPU-Zeit.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 16:53 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Das mit dem Warten stimmt zwar, aber ich glaube ehrlich gesagt nicht, dass Thmfrnk's Problem ein GPU-Bottleneck ist. Ich weiß ja nicht, was dein Programm macht, aber ich schätze es rendert keine hochkomplexen, Shader-intesiven, animierte Models mit 100 Lichtquellen und Tesselation? :wink: Daher tippe ich mal auf Immediate Mode oder sowas.


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 19:23, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Auflösung verringern
BeitragVerfasst: Di Jul 06, 2010 19:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
mrtrain hat geschrieben:
Das mit dem Warten stimmt zwar, aber ich glaube ehrlich gesagt nicht, dass Thmfrnk's Problem ein GPU-Bottleneck ist. Ich weiß ja nicht, was dein Programm macht, aber ich schätze es rendert keine hochkomplexen, Shader-intesiven, animierte Models mit 100 Lichtquellen und Tesselation? :wink: Daher tippe ich mal auf Immediate Mode oder sowas.

Dazu zwei Kommentare:
Zum einen nutzt OpenParty z.B. Displaylisten (was intern mittlerweile ja auch VBOs sind), aber keine "hochkomplexen, Shader-intesiven, animierten Models mit 100 Lichtquellen und Tesselation", läuft bei 1280x1024 auf meinem Tower trotzdem nicht flüssig und die CPU geht hoch.
Zum anderen bleibt die Anzahl an Immediate-Befehlen mit steigender Auflösung konstant. Wenn die bei einer niedrigen Auflöung 5% Systemlast ausmacht, wird das bei einer hohen Auflösung nicht mehr.

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]