問題タブ [egl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
579 参照

android - Android EGL オーバーレイの透過性の問題、スクリーンショットと表示の違い

私のアプリは、8888 形式のフルスクリーン glSurface オーバーレイを使用しています。ほとんどのデバイスでは、これで問題なく動作します。OpenGL ES を使用して半透明の画像を描画できます。これは実際に、他のネイティブ ビューの上に透明でオーバーレイされます。

ただし、Nexus 10 および Note 2 (およびおそらくその他のデバイス) では、DDMS で撮影したスクリーンショットは完全に正しく見えますが、半透明のピクセルは物理ディスプレイでは正しく見えません! これは私を困惑させました - 視覚的な表示がスクリーンショットとどう違うのでしょうか?

フレームバッファ内のアルファ値が 1 (0xff) または 0 (0x00) 以外のピクセルの場合、異常が発生するようです。

Nexus 10 の DDMS スクリーンショットを添付しました。テストカードの画像が正確に表示されているはずです。非常に異なる画像を示すディスプレイからの写真も添付しました...説明したように、EGL オーバーレイ アルファ値が 0x00 または 0xff ではないピクセルが正しく表示されていないようです。注 2 も同様です。

この問題を解決する方法を知っている人はいますか? デバイスのディスプレイに問題があるかどうかをプログラムで判断する方法さえわからないため、これは私たちにとって大きな障害です。

Nexus 10 ディスプレイの写真が正しくないように見える Nexus 10 DDMS スクリーンショット、正しいように見える

0 投票する
3 に答える
11476 参照

android - Android ndkでGraphicBufferを使用する方法

Android での opengl es 表示パフォーマンスを改善する方法での質問に対する回答を参照して、これを尋ねています。ndk-r9d で GraphicBuffer を使用するコードをビルドしようとしていました。しかし、 GraphicBuffer がこのスコープで宣言されていないと言っています。eglCreateImageKHR と glEGLImageTargetTexture2DOES の同じコメント。

EGL/eglext.h と GLES2/gl2ext.h を追加しました。ui/GraphicBuffer.h をインクルードしようとしましたが、取得していません。追加する別のヘッダー ファイルはありますか?

以下のコードは、glTexSubImage2D() の使用を避けるために追加したものです。

実行するにはどうすればよいですか......

前もって感謝します..

0 投票する
1 に答える
570 参照

opengl-es-2.0 - eglTerminate 後の GL コマンド

質問は、OpenGL ES 2.0 と EGL 1.4 に関するものです。

eglTerminateが呼び出された後の GL コマンドの動作の仕様要件があるかどうかを理解しようとしています。つまり、GL エラーがあるか、例外である可能性があります。

この場合に予想される動作の定義はありますか、それとも GL コマンドは EGL コマンドの影響を受けるべきではありませんか?

ありがとう

0 投票する
1 に答える
10310 参照

android - Android:SurfaceView なしで SurfaceTexture を作成することは可能ですか?

この回答と同様の設定で、管理できる OpenGL テクスチャを使用してSurfaceTextureを作成したいと考えています。(ここで引用:)

  1. OpenGL でテクスチャを作成する
  2. このテクスチャを新しい SurfaceTexture のコンストラクタに渡します。
  3. この新しい SurfaceTexture をカメラに与えます。
  4. OES_External を使用していることを確認してください (詳細については、ドキュメントを参照してください)。

ただし、OpenGL テクスチャを作成するには (回答のステップ 1 のように)、EGL contextが必要です。これには、EGLSurface を最新にする必要があり、SurfaceTexture が必要です。EGL コンテキストを作成する唯一の方法は、SurfaceView (または SurfaceTexture を持つ別のビュー) を作成し、それを使用して EGLSurface を初期化し、EGLContext を現在の状態にすることです。

私の目的は、EGLContext を作成し、それをバックグラウンド スレッドで最新の状態にして、カメラのプレビュー画像で画面外の計算を行うことです (主に NDK を使用)。ライブラリを作成し、できるだけ UI から独立させたいと考えています。関連する 2 つの質問:

Java 側で、事前に SurfaceTexture を作成せずに EGLContext を作成することは可能ですか?

NDK 側では、以前はネイティブの windows を作成するためのプライベート API 呼び出しがありましたandroid_createDisplaySurface()が、もう機能しません。それはプライベート API です。NDK でサーフェスを作成する方法はありますか?

私は EGL を使用するのが初めてで、EGLContext を最新にするために EGLSurface が必要な理由を理解できません。iOS では、EAGLContext を最初に作成し、次に必要に応じてフレームバッファを作成できます。EGL を使用すると、常にネイティブ ウィンドウが必要なようです。

0 投票する
1 に答える
61 参照

android - Open GL ES 2.0 でデフォルトで LandScape モードにレンダリング

https://github.com/libhybris/libhybris/blob/master/hybris/tests/test_glesv2.cで入手できるテスト アプリケーションに取り組んでいます。

基本的な GL アプリケーションをテストします。

このアプリケーションは正常に動作しています。私は Open GL ES 2.0 にかなり慣れていないので、アプリケーションがデフォルトでランドスケープ モードでレンダリングされるように、提供されたソース コードでどのような変更が必要かを知りたいです。(Open GL ES 2.0 には利用可能な glRotate 関数がないことを考慮してください)。

0 投票する
1 に答える
3771 参照

android - eglSwapBuffers 後のバック バッファー コンテンツの保持

私は Android とネイティブ C++ で Android 用のシーン描画を実装していegl 1.1ます。glSurfaceView現在、バックバッファとフロントバッファがスワップされているときに、「onDrawFrame」の最後に表示されるバックバッファに描画できるアンドロイドを使用しています。

私の問題はこれです-バックバッファーを表示し、スワップしていないかのように書き込みを続行できる必要があります。この要求の背後にある理由は、シーンが非常に大きく、各フレームを構築することは不可能であり、ユーザーが長時間待たなければならないため、描画の終了も待機していないためです。

つまり、段階的にシーンを構築する必要があります。レンダリング中の特定の時点で、時間だと判断しeglSwapBuffers、バック バッファーから描画されたコンテンツを表示する を呼び出しますが、書き込みを続けると、明らかに同期していない「前のフロント バッファー」に書き込みます。 . (これまでに描いたものは含まれていません)。

私の唯一の選択肢は、スワップする前にバックバッファをコピーすることです。疑似:

  1. バックバッファに描画
  2. バックバッファを一時バッファにコピー
  3. スワップ
  4. 一時バッファを(新しい)バック バッファにコピーします
  5. より多くのものをバック バッファーに描画する
  6. 等々...

私の質問 - ステップ 2、4 を実行する方法はありますか?

  • glCopyPixelsこの場合、役に立ちますか?例?
  • ですかglBlitFramebuffer

それとも、私はこれにすべて間違って近づいていますか?

私がすでにやったこと:

  • に設定EGL_SWAP_BEHAVIORしてみましEGL_BUFFER_PRESERVEDたが、特定のデバイスでしか動作しないようです ( khronos notesで説明されているように) :

一部のサーフェスでは、カラー バッファーの内容を保持するかどうかをアプリケーションで制御できます。

  • 各フレームでシーンを再レンダリングする - 不可能。これが推奨されていることを何度も読みました。