0
我发现带有模糊效果的andengine示例,它工作正常,我发现我可以使用ShaderProgram类并在Sprite的PreDraw中使用一些着色器(setShaders)。AndEngine - 如何使用独立着色器
我可以使用相同的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";
最终目标是将顶点数组传递给着色器(4 * n个数字 - n个矩形的坐标),它将绘制该数组,并且片段着色器将在每个矩形上绘制位图纹理。与一步一步地绘制n个形状相比,传递和绘制n个形状的速度会更快,并为每个形状创建一个精灵 – dilix
听起来就像要查找SpriteBatch类一样? –
这似乎是我的问题的解决方案,thx,我会尝试 – dilix