2012-01-22 26 views
0

私はこのエラーを取得しています:のOpenGL ES APIエラー(なしコンテキスト)

ERROR libEGL call to OpenGL ES API with no current context

私のクラスはGLSurfaceViewを拡張します。私はいくつかのものを初期化するためにInitアクティビティから呼び出されるメソッドInit()を持っています。このメソッドは常にOnSurfaceCreated()の後に呼び出されます。このメソッドはネイティブライブラリ関数を呼び出し、これは次にいくつかのOpenGL関数を呼び出します。

メソッドをonDraw()で初期化して動作させるように変更しました。 したがって、GL10パラメータを持つjavaメソッドからのみopengl関数(Javaまたはネイティブコードから)を呼び出すことができますか?

私は単純なシングルスレッド開発から来ているので、私は混乱していますが、マルチスレッドのプログラミングです。ネイティブコードからopengles関数を呼び出すことは安全です(コンテキストが利用可能な場合)。 OnDraW()、onSurfaceCreated()、onSurfaceChanged()からのみですか?

アクティビティメソッドから、私はglクラスのInit()メソッドを呼び出し、コンテキストが利用できないのはなぜですか?

答えて

0

queuevent(実行可能)を使用していますか?それの音であなたはUIスレッドからネイティブ関数を呼び出しています。 queueventを使用することにより、これらがglothread で実行され、その後、正しいコンテキストを使用することが保証されます。 これをチェックしてください:http://developer.android.com/reference/android/opengl/GLSurfaceView.html#queueEvent(java.lang.Runnable

関連する問題