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

Aktuelle Zeit: Fr Jul 18, 2025 11:21

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: In Graustufen rendern
BeitragVerfasst: Mo Nov 30, 2009 12:24 
Offline
DGL Member

Registriert: Mo Nov 30, 2009 10:13
Beiträge: 23
Ich will eine gerenderte Szene in Graustufen rechnen und dann einen entsprechnenden Farbeteile(Rot oder Grün&Blau) weglassen.
Eine Möglichkeit um Graustufen zu erzeugen, die ich ausprobiert habe, ist indem ich das mit glPixelTransferf, glReadPixels und glDrawPixels mache. Das dauert es aber pro Frame fast 2 Sekunden :/. Ist aber ohnehin ehr eine fusch Lösung.

Gibt es eine Möglichkeit die Szene gleich in Graustufen rendern zu lassen? Anschließend könnte man ja dann entsprechend mit glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE) zum Beispiel nur den Rot-Anteil heraus filtern?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: In Graustufen rendern
BeitragVerfasst: Mo Nov 30, 2009 12:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also mit Shadern ist das extrem einfach:

In der letzten Zeile des Fragmentshaders fügst du einfach sowas in der Art ein:
Code:
  1. float gray = 0.299*gl_FragColor.r + 0.587*gl_FragColor.g + 0.114*gl_FragColor.b;
  2. gl_FragColor.rgb = vec3(gray, gray, gray);

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: In Graustufen rendern
BeitragVerfasst: Mo Nov 30, 2009 12:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zusatz: Wenn du die einzelnen Farbanteile haben willst ist glColorMask (wie du schon selbst herausgefunden hast) eine Option. Dafür braucht es dann auch keinen Shader. Eine Lösung um Graustufen ohne Shader zu erzeugen wäre die einzelnen Farbanteile jeweils in eine Textur zu rendern und dann entsprechend der obigen Faktoren zusammen zu blenden. Aber der Einsatz eines Shader macht dir hier das Leben wirklich leichter...den dann brauchst du statt 4 Passes nur einen einzigen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: In Graustufen rendern
BeitragVerfasst: Mo Nov 30, 2009 12:44 
Offline
DGL Member

Registriert: Mo Nov 30, 2009 10:13
Beiträge: 23
Hm okay, dann werd ich mich woll mal mit Shadern unter Qt auseinander setzen müssen ;D


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 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.007s | 14 Queries | GZIP : On ]