BUG:

Caused by: java.lang.IllegalStateException: setRenderer has already been called for this instance.

或者NullPointer错误


解决方法:

把setEGLContextClientVersion(2);挪到setRenderer()前面。方法的注释上写到“If this method is called, it must be called before setRenderer(Renderer) is called. 
”。


拓展:

并且setRender()之后之前的方法调用顺序,也是固定。详情可以看代码注释,如下:

This method should be called once and only once in the life-cycle of a GLSurfaceView.

(这些方法只能在CLSurfaceView中有且只能调用一次)

The following GLSurfaceView methods can only be called before setRenderer is called:

(setRender前调用,当然也包括setEGLContextClientVersion(2))

  • setEGLConfigChooser(boolean)
  • setEGLConfigChooser(EGLConfigChooser)
  • setEGLConfigChooser(int, int, int, int, int, int)

The following GLSurfaceView methods can only be called after setRenderer is called:

(setRender后调用)

  • getRenderMode()
  • onPause()
  • onResume()
  • queueEvent(Runnable)
  • requestRender()
  • setRenderMode(int)

更多相关文章

  1. Android(安卓)NDK 开发
  2. android之android.os.NetworkOnMainThreadException错误
  3. android 可滑动的View
  4. 自定义全屏Dialog
  5. android ndk调用Log.getStackTraceString(new Throwable())输出
  6. Android(安卓)调用系统浏览器 出现activitynotfoundexception 解
  7. android获得mac和ip
  8. Android进程与线程基本知识四
  9. 【android】当数据库需要更新时我们该怎么办?

随机推荐

  1. 算术运算符和表达式
  2. hello 51cto
  3. 如何制作和使用自签名证书
  4. 更简单的 Traefik 2 使用方式
  5. NUC 折腾笔记 - Linux 系统篇
  6. 久等了,全球第二大浏览器终于支持这项重要
  7. 从封装 Nginx NJS 工具镜像聊起
  8. 使用 Docker 和 Nginx 打造高性能二维码
  9. 基于 Apache Flink 和规则引擎的实时风控
  10. 2020 岁末总结