問題タブ [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.
android - 「WSEGL_WaitNative: 認識されないエンジン」エラーの原因として考えられるものは何ですか? (Android NDK)
私が作成した Android アプリを、あるユーザーの Galaxy Nexus で実行すると、次のエラー メッセージが表示されます。
奇妙なことに、他のいくつかのデバイスで実行している場合、このエラー メッセージは生成されません。このエラーの考えられる原因を知っている人はいますか? Google は私にとって有用なものを何も引き上げていません。簡単なテスト ケースをまとめて、ここに投稿しようと思います (プロジェクトはかなり大きいため、投稿する関連コードを特定するのは困難です)。
参考までに、アプリからの完全な logcat 出力を次に示します。
android - ICS上のeglCreateWindowSurface、および2Dから3Dへの切り替え
NDKベースのゲームをAndroidICSで動作させようとしています。HoneycombとGingerbreadでは問題なく機能しました。
ゲームは、いくつかの2Dレンダリング、いくつかの3Dレンダリングを使用し、実行のさまざまな段階で2つを切り替えます。(サードパーティのコードのため、これは交渉できません。)2DレンダリングにはANativeWindow_lock()
/を使用し、3Dレンダリングには// 3を使用しています。ANativeWindow_unlockAndPost()
eglCreateWindowSurface()
gl*()
eglSwapBuffers()
HoneycombとGingerbreadでは、これはすべて正常に機能しました。ICSではeglCreateWindowSurface()
、ログに次のメッセージが表示されて失敗します。
ソースコードを見ると、2Dレンダリング用にネイティブウィンドウが開いているために失敗していることは明らかですeglCreateWindowSurface()
。最初にサーフェスを解放しないと、3Dに変更できません。ただし、ANativeWindow APIには、これを行うための明確な方法がないようです。
他の誰かがこれに遭遇しましたか、そして解決策は何ですか?
更新しました
そこで、代わりにOpenGLプリミティブを使用するように2Dレンダリングコードを書き直しました(バックバッファーをテクスチャにアップロードし、三角形のペア、スワップバッファーを介してテクスチャをレンダリングします)。これはある程度まで機能します。ここで起こっているのは、2Dレンダリングが正常に機能することです。次に、サーフェスを破棄し、3Dレンダリングの準備として新しいサーフェスを作成すると、2回目の呼び出しがeglCreateWindowSurface()
失敗します。今回は、次のようになります。
...そしてそれはのEGLエラーをスローしますAEGL_BAD_NATIVE_WINDOW
。
新しいサーフェスは、古いサーフェスとまったく同じ属性で作成されることに注意してください。私は、への2つの呼び出しの間にeglTerminate()
/を呼び出すことを確認しようとしました。eglInitialize()
eglCreateWindowSurface()
各ANativeWindowを1回だけ使用できるのですか?もしそうなら、それはクロノスのEGL適合性テストに失敗しませんか?では、NativeActivityにウィンドウを再作成させる方法はありますか?
更新更新
最後の問題はeglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)
、コンテキストとサーフェスを破棄する前に電話をかけなかったことが原因であることが判明しました。これにより、スレッドがコンテキストとサーフェスのバインドを解除するまで破棄が遅延していましたが、もちろんそうではなかったため、呼び出しはeglCreateWindowSurface()
合法的に失敗しました(同じネイティブウィンドウに2つのウィンドウサーフェスを設定することはできません)。
これは少しeglTerminate()
直感に反します。これは、呼び出しによってすべてのEGLリソースが破棄されると想定されるためですが、仕様では許可されています。注意してください!
android - OPENGLESとEGLライブラリの混同
OPEN GL ES
ライブラリが何をするのか、何をするのかが わからないという点で、Androidのソースコードを読んで EGL library
いました。
この2つのライブラリの間に何か関係はありますか?
http://www.khronos.org/opengles/documentation/opengles1_0/html/を見まし たが、まだ取得していません。
opengl-es - OpenES 2.0 + X11を使用してウィンドウを作成し、色で塗りつぶす方法は?
私はできる限りグーグルで検索しましたが、何も見つかりませんでした。
私がやりたいこと:
- X11(Xlib)でウィンドウを作成し、表示します
- OpenGLES2.0を使用してウィンドウを色で塗りつぶします
ArchLinuxでのOpenGLES2.0のサポートには、MESAを使用します。Xlibを使用して単純なXウィンドウを作成する方法を知っています。EGLとOpenGLESの基本的な知識はありますが、それらすべて(X11 + EGL + OpenGL ES 2.0)を組み合わせて使用する方法を理解できません。
誰かがXウィンドウを準備してOpenGLES2.0に正しく接続し、レンダリングを開始する方法について、少なくとも短いコード例を書いたら、私は非常に感謝します。
android - タイプ「EGL_DEFAULT_DISPLAY」は、定数が明確に定義されている間、エラーを解決できませんでした
私は Android 2.3.3 用のネイティブ アクティビティ アプリに取り組んでいます。コード サンプルからコードをコピーし、インクルード パスを設定しましたが、Eclipse (Indigo) はまだこの定数を見つけることができません。
ただし、コンパイラはエラーを表示しません。
理由はありますか?
android - Android の libgdx: egl エラー 12292
eclipse で libgdx を使用して簡単なゲームを作成しました。デスクトップモードで起動すると、ゲームは正常に実行されます。しかし、実際に自分のデバイスで実行すると、上記のエラーが発生します。画面が真っ暗のままで、ゲームが動作しません。
c++ - Qt Creator で EGL をリンクしますか?
Qt Creator の MinGW フォルダーに EGL があります。私が知りたいのは、EGL の適切なリンカー フラグが何であるかです。残念ながら、動作-lEGL
し-legl
ません。
LIBS += -legl -lGLESv2 #<-- does not compile
これに対する回避策はありますか? 注:OpenGLの背後にある「Qtの方法」に関して、QtでEGLを使用するつもりはありません。私はそのコア フレームワークなどに Qt Creator を使用しているだけです。私がやっていることを実行するために、 arm Web サイトからダウンロードしたエミュレーターを実行する予定です。
ありがとう。
android - eglWaitNativeのパラメータはどうあるべきですか?(Android SDK、EGL10)
インターネットで見つけた例では、eglWaitNativeの最初のパラメーターにEGL10.EGL_NATIVE_RENDERABLEを使用し、2番目のパラメーターに「null」を使用しているようです。例えば:
ただし、Galaxy Nexusでは、これにより、logcat出力にスパムを送信する次のエラーメッセージが表示されます。
APIには「engine」というintとしてリストされているため、最初のパラメーターは間違っている必要があるようです。これは、エラーメッセージ「unrecognisedengine」と一致しているようです。もしそうなら、代わりに何を使うべきですか?2番目のパラメーターが問題である場合、APIによれば、それは「オブジェクト」タイプであり、レンダリングターゲットを記述するプラットフォーム固有のオブジェクトを表します。しかし、「null」以外にここに何ができるのか理解できないようです。私は完全に軌道に乗っていないのですか?
linux - Linux での EGL サポート
Linux でコンパイルしたいクロスプラットフォーム アプリがあります。問題は、バイナリ nVidia ドライバーが(アプリが使用する) EGLインターフェースを公開しないことです。したがって、できるだけアプリを変更しないようにするために、GLXをEGLにマップするラッパーがあるかどうか疑問に思っていました。
android - EGL は Linux で動作しますが、Android では動作しません
私は EGL/GLES 2.0 コードを持っています。これを Linux (Mesa 経由) と Android (iOS が来る予定) で実行しようとしています。Linux では問題なく動作し、期待どおりにレンダリングされます。Android (電話、タブレット、エミュレーター - すべて 4.01) で実行すると、正常に動作しますが、何も表示されません (画面は黒いままです)。コードは 3 つすべてで 99% 同じですが、Android 用の特別な処理がいくつかあります。私のEGL属性に従ってください:
EGL 作成コードに従います。
誰かが光を当てることができますか、何をテストするか、または問題を見つける方法はありますか?
編集:
他のいくつかのバグを修正し、Android Emulator とHP タッチパッド(Cyanogenmod 9 alpha) で正常に動作するようになりましたが、Cyanogenmod 9を使用したSamsung Galaxy S1で黒い画面が表示されます*ため息*。