但是,2楼手段创建的是opengl es 1.0 版本窗口,我们知道opengl es 1.0 采用的是fixed pipeline进行渲染,而非glsl渲染,而且矩阵运算方面也采用的是内置式,很不灵活, opengl es 2.0则很好的解决了这一问题,开启了opengl es 2.0,可以通过自己写shader实现阴影,反射,折射,环境光遮罩等效果,让画面更逼真。 所以我们要在接收APP_CMD_INIT_WINDOW事件后,创建一个opengl es 2.0的渲染窗口,需要注意的是,opengl es版本选择单一的,创建了opengl es 2.0的窗口后,opengl es 1.0部分指令将失效。
但opengl es 2.0 的函数,例如glCreateShader, 是不是马上可以用了呢? 答案是否定的。我们必须注意到,opengl es 2.0的配置是在回调函数中完成的,而并不是在入口函数android_main中完成的,而想要初始化opengl es 2.0,就必须初始化窗口,想要初始化窗口,又先要用 先前编写的refresh 刷新函数,拉取并处理APP_CMD_INIT_WINDOW事件,但我们如何才能得知APP_CMD_INIT_WINDOW事件被处理了呢? 我们可以采用全局变量做记录