OpenGL,Android注意事項初始化順序 NullPointer,androidnullpointer
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 beforesetRenderer(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)