問題タブ [caeagllayer]
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.
ios - アプリのバックグラウンド処理中に OpenGL の同時描画を停止するにはどうすればよいですか?
アプリがバックグラウンドになるとすぐに、OpenGL 関数の呼び出しを停止する必要があります。しかし、どういうわけか、OpenGL を停止するすべての試みが失敗し、ユーザーがホーム ボタンを押すと、アプリが頻繁に (常にではありませんが) クラッシュします。
でクラッシュします
例外の種類: EXC_BAD_ACCESS コード: 0x1 の KERN_INVALID_ADDRESS libGPUSupportMercury.dylib gpus_ReturnNotPermittedKillClient
私の理解では、アプリがフォアグラウンドになくなった後に OpenGL 関数を呼び出すと、GPU がアプリで使用できないため、アプリがクラッシュします。
OpenGL でレンダリングするビューにはディスパッチ キューがあります
UIScrollView と並行してレンダリングする必要があります。そのため、キューが UIScrollView を待機できるようにする GCDセマフォがあります。
runloop を更新するために CADisplayLink を作成します。
update メソッドは、シリアル レンダー キューで非同期に描画計算を実行し、セマフォを使用して UIScrollView を待機します。最後に、メインスレッドで同期をコミットします。
update メソッドは、メイン スレッドがレンダリングできるかどうかをチェックします。チェックは次のようになります。
私が最も疑っている 1 つのことは、キューを停止する同時実行性の問題です。非同期であるため、表示リンクを停止した後でもブロックが起動します。
したがって、不足しているのは、この非同期ブロックで OpenGL 関数を呼び出す前に、-canRender もチェックする必要があることです。
わかりましたが、レンダー実行ループの開始時にこのチェックを行うと想像してください。-canRender
はいと言います。それから私は電話します[sprite drawState:state];
。このメソッドは多くの gl 関数を呼び出します。これが根本的な問題だと思います。アプリがまだフォアグラウンドにある場合、非同期ブロックがメイン スレッドをチェックしても、3 ナノ秒後に複雑な描画を行うために非同期を続行すると、アプリがバックグラウンド状態になり、クラッシュする可能性があります。
そのため、すべての単一の gl 関数呼び出しの前にメイン スレッドで -canRender をチェックしても、分割ナノ秒後のアプリがバックグラウンドにあり、クラッシュする可能性があります。
OpenGL を裏返しにシャットダウンして、関数の呼び出しを無視する方法はありますか。仕上げ方法について聞いたことがあります。私はそれをシャットダウンする必要があります。しかし、どのように?
ios - コア イメージ フィルタを使用した EAGLContext
カメラのビデオ フィードにリアルタイムで画像を追加したいのですが、必要なのは表示するだけで、保存する必要はありません。標準の Core Image 手順を使用すると問題なく動作しますが、より多くのフレーム レートが必要です。しかし、このコードのコメントを外して次にコメントすると、そうではありません。OpenGLView
メソッドを持つ単なるUIView
サブクラスです
何が欠けている?私が間違っていることは何ですか?どうもありがとうございました。
ios - Open GL ES 2.0 renderbufferStorage が false を返す
iOS アプリで 3D モデルを表示するために Framebuffer を作成しようとしていますが、framebuffer が作成されると、renderbufferStorage が false を返します。私のコードは GLCameraRipple サンプル コードに基づいています。
フレーム バッファを作成するコードは次のとおりです。
どんな助けでも大歓迎です。
前もって感謝します。
ios9 - CAEAGLLayer - Siri 入力後に OpenGL API が無効になる
iOS 9 ベータ 5 でかなりおかしな動作が見られます。Siri を使用して文字列を UITextView に読み上げると、CAEAGLLayer を対象とするすべての OpenGL 呼び出しが機能しなくなります。レンダリング コードに異常はありません。音声ディクテーションが使用されると、効果がなくなったようです。
iOS 9 ベータ版リリースでこれを経験した人はいますか?