我的Android程序必须使用glBlitFrameBuffer()
函数来复制FrameBuffer
对象。但只有OpenGL ES 3.0+设备支持glBlitFrameBuffer()
功能。我想支持OpenGL ES 2.0+设备。
这个功能有什么解决方案/替代方案吗?
答案 0 :(得分:2)
答案 1 :(得分:0)
我创建了一个CopyShader,它只使用着色器从纹理复制到帧缓冲区。
private static final String SHADER_VERTEX = ""
+ "attribute vec4 a_Position;\n"
+ "varying highp vec2 v_TexCoordinate;\n"
+ "void main() {\n"
+ " v_TexCoordinate = a_Position.xy * 0.5 + 0.5;\n"
+ " gl_Position = a_Position;\n"
+ "}\n";
private static final String SHADER_FRAGMENT = ""
+ ""
+ "uniform sampler2D u_Texture;\n"
+ "varying highp vec2 v_TexCoordinate;\n"
+ "void main() {\n"
+ " gl_FragColor = texture2D(u_Texture, v_TexCoordinate);\n"
+ "}\n”;
将它们用作着色器,然后将u_Texture
设置为要从复制的纹理,并绑定要写入的帧缓冲区,然后设置。