AndEngine - 如何使用独立着色器

时间:2012-05-02 15:59:34

标签: android graphics opengl-es-2.0 shader andengine

我发现了具有模糊效果的andengine样本并且工作正常,我发现我可以使用ShaderProgram类,并且在Sprite的PreDraw中使用一些着色器(setShaders)。

我可以使用相同的ShaderProgramm类并使用着色器而不使用附加到精灵吗?

例如在onDraw中使用仅在场景上绘制grenn三角形的Shader(如在android opengl示例中)。有没有简单的方法以这种方式使用ShaderProgram(如何从Sprite的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";

1 个答案:

答案 0 :(得分:2)

为什么不像Rectangle类一样创建Triangle类?