0
ぼかし効果を持つandengineサンプルが見つかりました。うまくいきました。私はShaderProgramクラスを使用でき、SpriteのPreDrawではいくつかのシェーダ(setShaders)を使用しています。AndEngine - スタンドアロンシェーダの使い方
同じクラスのShaderProgrammを使用し、スプライトにアタッチすることなくシェーダを使用できますか?
たとえばonDrawでは、シーン上にグレンの三角形を描画するだけのShaderを使用します(android openglのように)。この方法でShaderProgramを使用する簡単な方法はありますか(スプライトのPreDrawからシェーダをどのように取り付けることができますか)。
私はこのようななめらかを試してみた:
BrushShaderProgram bs = BrushShaderProgram.getInstance();
bs.link(pGLState);
GLES20.glUseProgram(bs.getId());
GLES20.glVertexAttribPointer(bs.maPositionHandle, 3, GLES20.GL_FLOAT, false, 12, triangleVB);
GLES20.glEnableVertexAttribArray(bs.maPositionHandle);
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
シェーダは単純です:
public static final String VERTEXSHADER =
"attribute vec4 vPosition; \n" +
"void main(){ \n" +
" gl_Position = vPosition; \n" +
"} \n";
public static final String FRAGMENTSHADER = "precision mediump float; \n" +
"void main(){ \n" +
" gl_FragColor = vec4 (0.63671875, 0.76953125, 0.22265625, 1.0); \n" +
"} \n";
最後の目的は、頂点配列をシェーダに渡すことです(4 * n個の数値 - n個の矩形の座標)。この配列を描画し、フラグメントシェーダは各矩形にビットマップテクスチャを描画します。 n個のシェイプを段階的に描画し、それぞれにスプライトを作成するよりも同時にn個のシェイプを渡して描画するほうが速くなります – dilix
SpriteBatchクラスを検索したいのですか? –
それは私の問題の解決策であると思われる、それを試してみよう – dilix