【发布时间】:2011-10-11 08:13:08
【问题描述】:
在 Android 中,渲染器会在 onSurfaceCreated、onSurfaceChanged 和 onDraw 中传递一个 GL10 对象。这个 GL10 的实际实例真的有什么特别的重要性吗,或者你可以实例化你想要的任何 GL10 实例吗?
我问的原因是我从不同来源收集到两条看似矛盾的信息:
我正在查看 gl2-android 的源代码,它是一组 ES 2.0 绑定。在示例 GL2Test.java 中,传递的 GL10 实例被完全忽略。渲染器只是简单地实例化一个 AndroidGL20 实例并使用它。
我一直在使用 Robert Green 的 OpenGL 动态壁纸代码。在他的介绍性博客文章中列出的许多 cmets 中,一些人指出,有时传递给 onSurfaceCreated 的 GL10 上下文会更改为不同的实例。如果发生这种情况,如果您不首先使用新实例重新加载纹理,则绘制将失败。所以解决方法是在 onSurfaceCreated 开始时进行测试,以确保它是同一个 GL10 实例并从那里决定是否重新加载。 (您不想每次都重新加载,因为每次屏幕旋转都会调用 onSurfaceCreated,这必须由动态壁纸支持。)
我要做的是设置 gl2-android 与动态壁纸一起使用。但我想确保我能以一种安全的方式使用它,避免上面第 2 点中描述的问题。
【问题讨论】: