問題タブ [eaglcontext]
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.
paint - CGMutuablePathとGLPaint
この質問を参照してください:OpenGL ES塗りつぶし効果 同じことをしようとしていますが、カスタムUIViewがあります。これには、異なるCGMutuablePathが含まれており、選択したUIViewで描画のみが有効になっています。
私はGLPaint、PaintingViewクラスを使用し、それをカスタムクラスとして使用して、さまざまなパスを描画しました。すべてが正常に機能しています。私もそれらのパスを埋める必要があることを除いて。ユーザーがバケットペイント効果を使用したい場合。定義済みのCGクローズドパスを使用しているので、EAGLContextを使用してそれらのパスを埋めることは可能ですか。私はそれをCGContextRefで埋めるために多くの方法を試みましたが、それは常に「無効なコンテキスト」で終わります。単一のビューで2つの異なるコンテキストを使用することは不可能だと思います。
誰かがこの問題で私を助けることができますか?EAGLContextを使用してパスを埋めるにはどうすればよいですか?
ios - -[EAGLContext renderbufferStorage:fromDrawable:] 2 回目に失敗しましたか?
iOS openGL ES アプリケーションを開発しています。
私は通常の EAGLView / ES2Render をやっています。
起動時に、次のコードを使用して frambuffer の作成が成功します。
すぐに、UIView
が-layoutSubviews
呼び出され、次に実行し-resizeFromLayer:
ます。
私がしていることは何も特別なことではありません。シーン トランジションをレンダリングする別のフレーム バッファがあり、色と深度にアタッチする 2 つのテクスチャがあります。
2 回目-renderbufferStorage:fromDrawable:
は ( -layoutSubviews
-> resizeFromLayer:
) 呼び出され、常に失敗します ( を返しますNO
)。glGetError()
その直前に呼び出してもエラーにはなりませんが、リターンの直後に呼び出しますGL_INVALID_OPERATION
。これを無視して続行するとglGetRenderbufferParameteriv()
、適切な幅と高さ (iPhone 5 ではそれぞれ 640 と 1136) が得られますがglCheckFramebufferStatus()
、GL_FRAMEBUFFER_UNSUPPORTED
.
または、上記をスキップしてresizeFromLayer:
、これに置き換えました。
...しかし、同じエラーが持続します(-renderStorage:fromDrawable:
失敗;今回は内部-createFramebuffers
)。
今のところ、私は戻ってきましたYES
(私のアプリは縦向きのみをサポートしているため、実際には画面サイズの変更は発生しません)が、いつか横向きをサポートする必要があるため、本当に修正したいと思っています...
ios - モーダル ビューがアンワインドされた後、EAGLContext currentContext は nil です。
私はそれを解決する方法を知っているので、これは実際には問題ではありませんが、私が興味を持っていることです. 以下に、ストーリーボードのスクリーンショットを示します。これは非常に単純で、最初にメイン メニューをロードします。このメニューには、モーダル セグエを介して UIView をロードするボタンがあります。その UIView には、ルート ビュー コントローラーが GLKViewController であるナビゲーション コントローラーを持つコンテナー ビュー コントローラーが含まれています。メイン メニューに戻るには 2 つの方法があります。まず、一時停止ボタンを押すと、一時停止ビュー コントローラーが OpenGL ビュー コントローラーの上にプッシュされます。次に、そこにある [メニューに戻る] ボタンを押すと、アンワインド セグエがメイン メニューに戻ります。または、タイマーがゼロになるのを待ってゲームが終了し、その時点でゲーム オーバー ビュー コントローラーがセグエ経由で表示されます。そこからメインメニューに戻ることができます。このストーリーボードのスクリーンショットを以下にリンクします。
http://i.stack.imgur.com/2LKVQ.png
ゲーム オーバー ビュー コントローラーに 2 つのセグエが接続されていることに気付くかもしれません。もともと、モーダル セグエを使用してそのビュー コントローラーを表示していました。メイン メニューに巻き戻してから新しいゲームを開始しようとしたときを除いて、すべてがうまく機能しました。
大したことではありません。最初は、埋め込まれた GLKViewController が黒い画面を描画しただけでしたが、何が起こったのかを理解したとき、これは、古いコンテキストであり、将来の使用のためにキャッシュされていました。ただし、一時停止メニューを介して、またはプッシュ セグエを介してゲーム オーバー ビューの表示に切り替えた後、プッシュ セグエから巻き戻した場合、[EAGLContext currentContext] は nil ではなく、初期化したコンテキストと同じままでした。 GLKView を初めてロードしたとき。したがって、キャッシュされたすべてのバッファ/テクスチャ/シェーダなどを使用でき、それらをリロードする必要はありませんでした。
読んでみると、モーダルセグエから巻き戻すと現在のコンテキストが消去されるのに、プッシュセグエからそれを行うと消去されない理由がわかりません。読んで分かったのは、各スレッドは独自の EAGLContext を保持しており、View Controller のセグエをどのように設定しても、常にメイン スレッドにとどまっているということです。なぜこれが起こっているのか誰かが考えているかどうか、私は興味があります。
ios - コア イメージ フィルタを使用した EAGLContext
カメラのビデオ フィードにリアルタイムで画像を追加したいのですが、必要なのは表示するだけで、保存する必要はありません。標準の Core Image 手順を使用すると問題なく動作しますが、より多くのフレーム レートが必要です。しかし、このコードのコメントを外して次にコメントすると、そうではありません。OpenGLView
メソッドを持つ単なるUIView
サブクラスです
何が欠けている?私が間違っていることは何ですか?どうもありがとうございました。
ios - handleScreenDidConnectNotification を処理するときに EAGL コンテキストを再作成する必要がありますか?
iOS で handleScreenDid(Dis)ConnectNotification を処理しようとしています。私が抱えている問題は、handleScreenDidConnectNotification を処理した後、アプリケーションの 2 フレームで非固有の glFunctions() から GL_INVALID_FRAMEBUFFER_OPERATION のエラーが発生することです。
通知からフレームバッファとレンダバッファをすでに削除して再作成しています(明らかに解像度が変更されているため)。しかし、EAGLContext ではありません。
私の質問は次のとおりです。通知を処理するときに EAGLContext* を解放/削除する必要がありますか?
ios - EAGLContextView renderbufferstorage:fromDrawable: iOS8 で頻繁に失敗する
ドキュメントには、考えられる失敗の理由が記載されていません。次のいずれかを取得できれば素晴らしいことです
- 失敗の理由
- glRenderBufferStorage を使用した API の置き換え。
opengl-es - iOS EAGLContext presentRenderBuffer ブロック
iOS 8 では、[_oglContext presentRenderbuffer:GL_RENDERBUFFER] の呼び出し中にアプリケーションが起動時 (_semwait_signal) にブロックされ、特に iPhone 4S などの古いデバイスでは数秒後にクリアされることがあります。presentRenderbuffer がハングする原因を知る必要がありますか? 何か案は。これは iOS 8 でのみ発生します。
ios - OpenGL ES コンテンツが実際に iOS で表示されるタイミングを調べる
CAEAGLLayer のレンダリング バッファ ストレージで EAGLContext を使用する場合、presentRenderbuffer を呼び出した後、
1) バッファの外観は、縦画面のリフレッシュと同期していますか? 2) 変更を含む垂直スキャンの開始のタイムスタンプを取得するにはどうすればよいですか?
ios - 2 番目のスレッドに EAGLContext presentRenderbuffer がありますか?
ゲーム エンジンを iOS に移植していますが、[EAGLContext presentRenderbuffer:] 呼び出しで例外が発生します。私のエンジンには、すべてのレンダリング コードがメイン スレッドとは別のスレッドにあります。エンジンは、メイン スレッドで CAEAGLLayer と EAGLContext を作成し、コンテキストをアクティブにしてビューのフレームバッファを作成し、コンテキストを非アクティブにすることによって機能します。その後、フレームごとにレンダー スレッドがコンテキストをアクティブにし、フレーム バッファーをバインドして描画し、最後にレンダー バッファーを表示します。
セカンダリ スレッドで presentRenderbuffer: を呼び出すことは可能ですか、それとも私の問題の原因ですか?