クロスプラットフォームの cocos2d-x ゲームでGPUImageライブラリの c++ ポートを使用しようとしています。GPUImage と cocos2d-x はどちらも独自の OpenGL コンテキストを作成して GPU で操作を実行するため、アプリケーションで問題が発生します。iOS 用に作成されたオリジナルの GPUImage ライブラリについて、作者は「sharegroup」を使用して GPUImage と cocos2d の間でコンテキストを共有することを提案しています。「共有グループ」の使用については、Apple ドキュメントのこちらにも記載されています。クロスプラットフォームのゲーム (Android と iOS 用) を作りたいので、Android などの他のプラットフォームで同じ機能を探していましたか? これをクロスプラットフォームで実装することは可能ですか?
1 に答える
0
この回答で提案されているようにそれを行うのはどうですか: https://stackoverflow.com/a/7892531/369009
Android は、OpenGL 共有グループの共通概念をサポートする EGL を提供します (暗黙的ではありますが、eglCreateContext の 3 番目の引数を介して、新しいコンテキストを共通グループに含める既存のコンテキストを提供します)。2 つのコンテキストが共有グループにある場合、それぞれが独立した状態を持ち、1 つのスレッドからのみ呼び出しても安全ですが、テクスチャや頂点バッファー オブジェクトなどの名前付きオブジェクトはそれぞれで使用できます。したがって、共有グループを使用すると、複数のスレッドで同時に OpenGL アクションを実行して、単一のスレッドで結果を組み合わせることができます。
これは機能しますか?(EGL がサポートされている場合はどこでも) かなりクロス プラットフォームになると思いますが、何らかの形で共有オブジェクト (テクスチャなど) へのアクセスを同期する必要があります。
于 2013-10-24T11:41:59.790 に答える