Main Menu

Schwarz / Weiß rendern

Started by Thunderfox, August 08, 2011, 12:38:12 PM

Previous topic - Next topic

Thunderfox

Hallo,

Ganz kurz und knapp: Gibt es eine simple Möglichkeit, den Framebuffer für wenige Sekunden nur schwarz weiß darzustellen oder gewisse Farben zu entnehmen? Die Texturen sind farbig und sollen auch farbig bleiben, da es dafür zu umfangreich wäre, alle Texturen zusätzlich schwarz weiß zu laden.

Wenn nicht, nicht schlimm, aber könnte ja sein ;)

EgonOlsen

Muss das Echtzeit sein oder macht es nichts, wenn es im Sekundenbereich liegt?

Thunderfox

Es sollte schon Echtzeit sein, aber welche Möglichkeiten gäbe es denn, auch wenn sie länger zum Rendern braucht? Meine erste Überlegung war, die einzelnen Pixel des Framebuffers zu manipulieren, jedoch habe ich keine Ahnung wie ich das anstellen könnte.

EgonOlsen

Ist das eigentlich für Android?

Thunderfox

Ja stimmt, hab ich ganz vergessen zu erwähnen. ;)

Ich sollte auch mal wieder im JPCT-AE Unterforum schreiben, so sind schließlich auch mehrere in der Lage, diese Nachrichten zu verstehen, wenn sie ähnliche Probleme haben, auch wenn mein Englisch nicht das beste ist. ^^

EgonOlsen

Also für Android ist es nochmal eine Spur komplizierter...bzw. einfacher. Einfacher, weil es mit OpenGL ES 1.x gar nicht geht. Jedenfalls habe ich keine Idee, wie das gehen sollte. Mit ES 2.0 könnte man es über Shader realisieren...dazu müsste man entweder alle Shader für alle Objekte temporär austauschen oder in einen Off-Screen-Buffer rendern und den, durch Shader manipuliert, auf den Bildschirm bringen. Das erfordert allerdings Support für FBOs, den ich aktuell noch nicht ergänzt in jPCT-AE habe. Meine Erfahrungen mit dem Zustand der OpenGL-Treiber lassen mich aber befürchten, dass das nicht auf allen Geräten sicher funktionieren wird.

Alternativ kann man den Framebuffer-Inhalt in ein Pixelarray kopieren und dort manipulieren. Das Ergebnis muss man dann irgendwie wieder ausgeben. Das geht vermutlich, wird aber nicht so schnell sein. Es gibt irgendwo im AE-Forum einen Thread, wo jemand was ähnliches gemacht hat.

Thunderfox

Alles klar, dann werde ich eine halbtransparente Grafik über die Welt legen, die den Bildschirm einfach abdunkelt oder farblich verändert. Ist zwar kein schwarz/weiß, aber ich denke, der wirkende Effekt sollte ähnlich sein.

Beim Pixelarray werde ich wohl konstant so viele Faces wie das Display Pixel hat *2 berechnen müssen, was zu einem sehr starken Performanceeinbruch führen dürfte. Hab im zweiten Beitrag nicht bedacht, dass OpenGL ja keine Pixel sondern dreiecke rendert.

Danke für die schnellen und hilfreichen Antworten hier im Forum :)