問題タブ [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.
linux - EGL の概要と使用方法
EGLとは何か、それが何をするのか誰か説明してもらえますか?
Linux 上の OpenGL-ES で EGL を使用するにはどうすればよいですか?
EGL はハードウェアとオペレーティング システムの間の層ですか?
android - GLSurfaceView.Rendererは、onDrawFrame()でバッファーを複数回交換できますか?
私のopenGLゲームでは、通常、onDrawFrame()のGLSurfaceView.Rendererクラスを使用してシーンを描画します。ただし、ロード画面を表示しているときに、データの各項目がロードされた後に画面を強制的に描画して、ロードバーを表示できるようにします。
どういうわけか、この描画呼び出し中にバッファスワップを強制することは可能ですか?私の唯一の選択肢は、複数のフレームにまたがってロードをずらすことです。これは、多くのやり直しを意味します。
私が呼び出そうとしているのはeglSwapBuffers()だと思いますが、GLSurfaceViewまたはGLSurfaceView.Rendererからeglコンテキストにアクセスする方法が見つかりません。
お時間をいただきありがとうございます。
opengl - EGL と OpenGL の関係は?
OpenVGとOpenGL|ES in Goの実装を書いています。どちらもKhronos EGL APIに依存しており、おそらく移植性を容易にするためだと思います。
楽しみと教育上の理由から、OpenGL ES の上に OpenVG の実装を書いています。レンダリング作業はあまり行っていないので、オープン API についてもっと学び、明確に定義された標準 (より簡単に) を実装する練習をしたいと思います。正しい結果が得られたかどうかを確認してください)。
私が理解しているように、EGL は、OS が提供する複数の API (GLX、WGL など) のいずれかを使用する代わりに、描画コンテキスト (またはそれが正しく呼ばれるもの) を取得するための標準 API を提供します。
Khronosがそのような努力をして、標準のOpenGLをループから外すとは信じがたいですが、問題は、OpenGL(実際の取引)がEGLとどのように、またはそうであるか、またはそれがOpenGL ESのみであるかどうかを見つけていないということです。OpenGL ES が EGL の描画コンテキストを使用できる場合、標準の OpenGL も機能しますか?
私はこれらすべてに本当に慣れていないので興奮していますが、実際に行っているプロジェクトは、描画操作に OpenVG を利用し、可能な限りハードウェア アクセラレーションを使用する Go ウィジェット ツールキットです。
OpenVG、OpenGL、OpenGL ES が EGL に依存している場合、私の質問には「はい」か「いいえ」で答えられると思います。昨夜、私がこの話題に頭から飛び込んだことを覚えておいてください.
OpenGL は EGL を使用または依存していますか?
トピックから外れましたが、EGL タグはありません。あるべきですか?
android - Android EGL/OpenGL ES フレーム レートの吃音
TL;DR
描画をまったく行わない場合でも、Android デバイスの OpenGL ES レンダリング スレッドで 60Hz の更新レートを維持することは不可能に思えます。謎のスパイクが頻繁に発生し (一番下のコードで示されています)、その理由や方法を突き止めようと私が行ったすべての努力が行き詰まりにつながっています。カスタム レンダリング スレッドを使用したより複雑な例でのタイミングでは、eglSwapBuffers() が原因であることが一貫して示され、頻繁に 17ms ~ 32ms を超えています。ヘルプ?
詳細
私たちのプロジェクトのレンダリング要件は、画面の片側から反対側へ固定された高速で水平にスムーズにスクロールする要素であるため、これは特に厄介です。いわばプラットフォームゲーム。60Hz から頻繁に低下すると、時間ベースの動きがある場合とない場合の両方で、顕著なポッピングとランチングが発生します。スクロール速度が速いため、30Hz でのレンダリングはオプションではありません。これはデザインの交渉の余地のない部分です。
私たちのプロジェクトは、互換性を最大化するために Java ベースであり、OpenGL ES 2.0 を使用しています。API 7-8 デバイスでの OpenGL ES 2.0 レンダリングと API 7 デバイスでの ETC1 サポートの NDK についてのみ説明します。それと以下のテストコードの両方で、ログ出力と私の制御を超えた自動スレッドを除いて、割り当て/GC イベントがないことを確認しました。
ストック Android クラスを使用し、NDK を使用しない単一のファイルで問題を再現しました。以下のコードは、Eclipse で作成された新しい Android プロジェクトに貼り付けることができ、API レベル 8 以上を選択している限り、ほとんどそのまま使用できます。
このテストは、さまざまな GPU と OS バージョンのさまざまなデバイスで再現されています。
- ギャラクシー タブ 10.1 (アンドロイド 3.1)
- ネクサス S (アンドロイド 2.3.4)
- ギャラクシー S II (アンドロイド 2.3.3)
- Xperiaプレイ(アンドロイド2.3.2)
- ドロイド インクレディブル (Android 2.2)
- Galaxy S (Android 2.1-update1) (API 要件をレベル 7 に下げる場合)
サンプル出力 (1 秒未満の実行時間から収集):
私はしばらくこれを追いかけてきましたが、レンガの壁にぶち当たりました。修正が利用できない場合は、少なくともこれが発生する理由についての説明と、同様の要件を持つプロジェクトでこれをどのように克服したかについてのアドバイスをいただければ幸いです。
サンプルコード
android - EGL_BAD_MATCH with Droid / Droid 2
私はOpenGLES2アプリをさまざまな電話でテストしてきました。DroidとDroid2で問題が発生しました。試してみるすべてのEGL構成は、EGL_BAD_MATCHになります。
他の電話で機能する構成を含め、EGL構成の多くの組み合わせを試しましたが、すべての組み合わせでEGL_BAD_MATCHが発生します。
誰かがこの問題に遭遇したか、解決策を知っていますか?
ありがとう
graphics - EGL_KHR_IMAGE <-それは何で、いつ使用する必要がありますか
誰かがegl画像とは何か、そして私がそれを使いたいときの例を簡単に説明できますか?パフォーマンスが大幅に向上することはわかっていますが、ドキュメントを見つけるのに問題があります。私が実際にそれを理解しようとする前に、私はそれがさらに学ぶ価値があることを確認したいと思います。
ありがとう。
qt - EGLでレンダリングするときのOpenGLティアリング効果
ARMボードのEGL実装によって提供されるサーフェス上でOpenGLを使用してレンダリングされたQtアプリケーションがいくつかあります。レンダリングで何らかのティアリングが発生しています。
読んでみると、vsyncに関連する問題である可能性があることがわかったので、EGL呼び出しeglSwapInterval(eglDisplay、1)を使用しましたが、それでもティアリングが持続します。その呼び出しは、引き裂きを取り除くのに十分ですか?その呼び出しはそのような効果を完全に取り除くべきですか?多少の破れが残っている可能性はありますか?
android - Android NativeActivity OpenGL-ES ネイティブ アプリ: フル スクリーン未満のサーフェスを取得する方法
Google の native_app_glue ラッパーを使用したネイティブ Android アプリがあります。GLES をレンダリングするためのフルスクリーン未満のサーフェスを取得したいと考えています。Activity から派生した Java レイヤーを使用する GLES アプリでは、これは Java レイヤーの getWindow().setLayer() によって実現されます。ただし、私のプロジェクトの状況では、このソリューションを使用できません。
nativeActivtiy と native_app_glue レイヤーを使用すると、JNI を使用して Java クラスを取得し、Java にコールバックできますが、View 階層を変更することはできません。JNI 経由で C コードから setLayers() にコールバックすると、NativeActivity が View 階層が作成されたスレッドと同じスレッドにないため、このエラーが発生します。
E/AndroidRuntime(21503): android.view.ViewRoot$CalledFromWrongThreadException: ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。
そして、これを行うための私のコードは次のとおりです。
一部の人が提案する解決策は、glViewport() を使用してフルスクリーン未満に描画することです。このソリューションは視覚的には機能しますが、EGL ドライバーがまだフルスクリーン サーフェスを処理しているため、パフォーマンスが低下します。
このアプローチが最適なソリューションであるかどうかは疑問です。これは、ネイティブ アプリ ラッパーを使用することからアーキテクチャが大きく変わるためです。a) ネイティブ アプリのグルー ラッパーを破棄し、ネイティブ コード (または少なくともその一部) を JVM と同じスレッドで実行する b) setContentView() を介して View 階層を作成する Java クラスを NativeActivity から派生させる c) Java と同じスレッドで実行されるネイティブ コードで JNI を使用して setLayout() を呼び出す d) ネイティブ コードの残りの部分は、必要に応じて別のスレッドで実行することができる
上記のアプローチが実行可能かどうか、これで障害に遭遇するかどうかはわかりません。
android - EGL または GLSurfaceView で OpenGL のバージョンを設定するにはどうすればよいですか?
私が取り組んでいる OpenGL Android プロジェクトでは、ES 2.0 が必要ですが、EGL を使用して達成することに慣れているレンダリング バッファー/サーフェスを制御する必要があります。GLSurfaceView を使用してオフスクリーン バッファーにレンダリングする方法がわかりません。その後、バッファーを表示することはありません。GLSurfaceView.EGLContextFactory を使用しても、Android の EGL パッケージ (EGL_CONTEXT_CLIENT_VERSION など) に含まれていない EGL 1.2 関数/定数がなければ、これを達成する方法は考えられません。
したがって、最初の明白な質問は、1) EGL_CONTEXT_CLIENT_VERSION と eglBindAPI() が省略されているにもかかわらず、ES 2.0 で EGL を使用する方法はありますか? 2) GLSurfaceView のコールバック surfaceCreated(EGLConfig) が呼び出される前に使用されるレンダリング コンテキストを設定するための新しい API はありますか?
x11 - GPGPUの非表示のX11ウィンドウを作成するにはどうすればよいですか?
非表示のXウィンドウを作成することは可能ですか?OpenGL ES 2.0コンテキストを初期化するには、Xウィンドウを手動で作成する必要がありますが、非表示にする方法が見つかりません。私はGPGPUのみを行っているので、出力ウィンドウは必要ありません。実際、私の場合はかなり面倒です。
で使用することが指摘されている以前の質問からの解決策を知っています。ただし、これによりXエラーが発生します。おそらく、EGLはグラフィックス要求に応答するためにウィンドウを必要とするためです。別の方法はありますか?多分それを最小化して作成しますか?しかし、私もそれについて何も見つけることができません。また、ウィンドウのサイズを非常に小さく設定しても、デバイス(Nokia N9)の画面全体を常に占めるため、役に立ちません。InputOnly
XCreateWindow()
GLXBadDrawable