2017-12-29 31 views
0

Ich mache ein Spiel in Libgdx.Libgdx Shader, der ganze Bildschirm betrifft

Die einzige Art und Weise, wie ich Shader benutze, ist, dass der Stapel die gegebenen Texturen nacheinander beeinflusst. Dies ist, was ich normalerweise in meinem Code tun:

shader = new ShaderProgram(Gdx.files.internal("shaders/shader.vert"), Gdx.files.internal("shaders/shader.frag")); 
batch.setShader(shader); 

Und das ist über alle der benötigten Code.

Wie auch immer, ich möchte diese Trennung zwischen Texturen nicht. Ich kann jedoch keine Möglichkeit finden, den ganzen Bildschirm gleichzeitig mit einem Shader zu beeinflussen, so wie der ganze Bildschirm nur eine große Textur hat. Für mich scheint dies der logischste Weg zu sein, einen Shader zu verwenden.

Also, weiß jemand, wie man so etwas macht?

+0

Alle mit einer Charge zeichnen. – icarumbas

+0

Es gibt viele verschiedene Möglichkeiten, wie Sie Shader verwenden können. Wenn Sie genau wissen, was Sie zu tun versuchen, ist es schwer zu beantworten. Machst du einen Post-Processing-Effekt, der die Farben ändert? Oder macht die Dinge verpixelt? Oder ändert die Beleuchtung oder macht Anti-Aliasing? – Tenfour04

+0

Für die meisten Arten von Vollbild-Effekten können Sie normalerweise alles in ein Rahmenpufferobjekt zeichnen und dann die Textur des FrameBuffers mit einem speziellen Shader auf den Bildschirm zeichnen. – Tenfour04

Antwort

0

Zeichnen Sie alle Texturen (Spieler, Darsteller, Landschaft, ...) mit dem gleichen Stapel und, wenn Sie auch den Hintergrund mit dem gleichen Shader beeinflussen möchten, zeichnen Sie eine stille Textur mit der Größe des Bildschirms im Hintergrund und zeichne es mit der gleichen Charge.

Verwandte Themen