0

为了能够试验各种 OpenGL 混合设置,我在我GLSurfaceView.RendereronSurfaceCreated()方法中包含了以下代码,整个项目设置为 API 级别 8:

GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFuncSeparate(GLES20.GL_SRC_ALPHA, [etc...]);
GLES20.glBlendEquationSeparate(GLES20.GL_FUNC_ADD, [etc...]);

在我的 AVD 上,主机 GPU 支持一切顺利(除了我对缺少GL_MAXGLES20.glBlendFuncSeparate().

在我从以下集合中发现之前,需要进行一些尝试和错误:

  • glBlendFunc()
  • glBlendFuncSeparate()
  • glBlendEquation()
  • glBlendEquationSeparate()

两种设备仅支持glBlendFunc().

从我的立场来看,现在很难判断该依赖什么。我显然没有预料到这一点,也没有找到迄今为止在 Web 上通常实现的任何信息。

有人可以确认至少glBlendFunc()在所有/大多数/...设备上都受支持,或者向我指出一些详细信息吗?

编辑:这是 logcat 的GLES20.glBlendEquation(GLES20.GL_FUNC_ADD)

D/libEGL  ( 4393): loaded /system/lib/egl/libGLES_android.so
D/libEGL  ( 4393): loaded /system/lib/egl/libEGL_POWERVR_SGX530_125.so
D/libEGL  ( 4393): loaded /system/lib/egl/libGLESv1_CM_POWERVR_SGX530_125.so
D/libEGL  ( 4393): loaded /system/lib/egl/libGLESv2_POWERVR_SGX530_125.so
W/dalvikvm( 4393): threadid=8: thread exiting with uncaught exception (group=0x4001d8a8)
E/AndroidRuntime( 4393): FATAL EXCEPTION: GLThread 9
E/AndroidRuntime( 4393): java.lang.UnsupportedOperationException: glBlendEquation
E/AndroidRuntime( 4393):    at android.opengl.GLES20.glBlendEquation(Native Method)
E/AndroidRuntime( 4393):    at org.blah.test.TestApplication$OGLBackground.onSurfaceCreated(TestApplication.java:209)
E/AndroidRuntime( 4393):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1317)
E/AndroidRuntime( 4393):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
W/ActivityManager( 1297):   Force finishing activity org.blah.test/.MainActivity
4

0 回答 0