我发现了具有模糊效果的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";
答案 0 :(得分:2)
为什么不像Rectangle类一样创建Triangle类?