0

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

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

例如,在 onDraw 中使用仅在场景上绘制 grenn 三角形的着色器(如在 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";
4

1 回答 1

2

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

于 2012-05-07T20:46:22.730 回答