2

スレッドを2つにしたい。1 つのスレッドは FBO を使用してテクスチャに書き込み、もう 1 つのスレッドはそれを使用して画面にレンダリングします。これはWindowsなどではできますが、Androidではどうすればよいのでしょうか? 私は GL ES 2 を使用しており、Textureview を使用しています。egl イメージ拡張機能について読んだことがありますが、それらを使用する方法がわかりません http://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image.txt http: //www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt egl 拡張機能がすべてのプラットフォームで完全にサポートされているわけではないことを読みました。Androidで使用しても大丈夫ですか?動作が保証されていないものは使用できません。

これは私がこのリンクで読んだものです: http://www.khronos.org/message_boards/showthread.php/7319-EGLImage-on-Android-NDK

  1. Android 4.0 で新しい TextureView クラスが追加されたので、Android では EGL イメージ拡張機能は必要ありません。TextureView を使用して、OpenGL ES と Canvas API の間でテクスチャ イメージを転送します。

TextureView を使用しています。「テクスチャ画像を転送する」ためにどのように使用しますか?

また、egl がテクスチャをデフォルトで共有として定義していることをどこかで読みました。これは何を意味するのでしょうか?既に共有として定義されているテクスチャを別のコンテキストで使用するにはどうすればよいですか?

画面へのレンダリングをブロックせずにテクスチャの読み込みを実行したいので、同じコンテキストを他のスレッドで現在の状態にしたくありません。これは理にかなっていますか?私は OpenGL の経験があまりありません。

どうやら、Firefox は私が使用しようとしているものと同じものを使用しているようです http://snorp.net/2011/12/16/android-direct-texture.html しかし、どうすればよいのかわかりません。

NDKではなくJavaを使用しています。

4

1 に答える 1

1

OpenGL ES が Android でデフォルトで動作する方法について説明しました。つまり、TextureView が提供する SurfaceTexture を使用して、1 つのスレッドで OpenGL ES をレンダリングします。Android の Surfaceflinger は、その SurfaceTexture を、別のスレッドによって、通常のビューの合成の一部としてディスプレイに合成します。

EGL イメージ拡張機能は、サーフェスへのポインターを取得するためのものであり、ネイティブ コードが必要で不要です。代わりに TextureView を使用してください。Android SDK で TextureView を使用するサンプル アプリがあります (ただし、OpenGL ES レンダリングではなくカメラ ビデオに SurfaceTexture を使用します)。

sources\android-17\com\android\test\hwui\GLTextureViewActivity.java

そのため、SurfaceTexture (TextureView の作成時に onSurfaceTextureAvailable() コールバックに提供される) を使用して、eglCreateWindowSurface() で EGL サーフェスを作成します。その SurfaceTexture は OpenGL ES レンダリングのターゲットとなり、関連する TextureView に表示されます。

EGLSurface EglSurface = mEgl.eglCreateWindowSurface(mEglDisplay, maEGLconfigs[0], surfaceTexture, null);
mEgl.eglMakeCurrent(mEglDisplay, EglSurface, EglSurface, mEglContext);

この記事が役立つと思います:

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1

于 2013-06-12T03:20:29.247 に答える