2016-08-29 12 views
0

私はlibGDXゲームでGLSLを使用してスクリーン全体にシェーダを適用したいと思います。色の背景をクリアするには 、私は舞台のspritebatchに自分のシェーダを適用すると、しかしLibGDX GLSL背景に適用

Gdx.gl.glClearColor(color.r, color.g, color.b, 1f); 
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

を使用しています:

stage.getBatch().setShader(shader); 

...シェーダが唯一の描かれたスプライトに適用されますステージではなく、画面全体である。 私はちょうど明確にするため、赤の影響を受けたピクセルをオンシェーダを使用しています:

どのように私は、画面全体に自分のシェーダを適用していますか?

+0

あなたはhttp://gamedev.stackexchange.com/を試すことができます。彼らがあなたをより良く助けることができるかもしれません。 – Mfusiki

+1

OpenGLでのクリア操作では、シェーダーは使用されません。シェーダをバックグラウンドに適用するには、スクリーンを塗りつぶすスプライトを描画し、それにシェーダを適用する必要があります。 – BDL

答えて

1

私はそれを理解しました。シェーダは、レンダリングされたテクスチャにのみ適用されます。 コードを描く私のバックグラウンドは現在以下の通りです:

Gdx.gl.glClearColor(0f, 0f, 0f, 1f); 
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

batch.begin(); 
batch.draw(background, 0, 0, width, height); 
batch.end(); 

変数backgroundは全体の背景を塗りつぶします2x2の質感です。

+0

"*私はそれを理解しました。シェーダは、レンダリングされたテクスチャにのみ適用されます。*"いいえ、テクスチャとは関係ありません。シェーダは*レンダリング*にのみ適用されます。画像の消去はレンダリングされません。 –

+0

あなたが言いたいことは何でも;) – kwantuM

関連する問題