問題タブ [glkview]

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.

0 投票する
0 に答える
190 参照

ios - 悪い色を返す GLKView スナップショット

私はいくつかの楽しいシェーダー処理を行っていますが、スナップショットを呼び出すと、奇妙なカラーリング アーティファクトが発生します。特に、赤チャンネルが…高く引っかかっているようですね。

それをJPEGに変換してロールに保存するか、UIImageViewに直接表示するかは問題ではないため、表示する他のコードがわからないため、奇妙な赤い色合いがあります。

この質問も関連しているというわずかな可能性がありますが、答えはありません

それは...実際には、ビューdrawableColorFormatを...に設定すると修正されるGLKViewDrawableColorFormatRGB565ようです...だから...誰がそれがなぜなのか説明できますか?

0 投票する
0 に答える
502 参照

ios - CIContext drawImage が機能しない

私は CI ライブラリについてよく知りませんし、Apple のドキュメントにある関数の説明だけでは、グラフィックスや画像処理を扱ったことのない人には十分ではありません。

(カメラからの)各フレームを処理し、処理されたフレームに応じて変換された矢印で各フレームにオーバーレイを配置できる必要があります。その結果、CIImage を直接描画するのではなく、フィルターから毎回 CGImage を作成することは、リソースの無駄に思えます。iPhone 4S では、もう少しパフォーマンスが必要です。

したがって、[context drawImage] を使用して CIImage を直接描画する私の試行では、次の結果が得られました。

1)以下のような単純なUIViewでコンテキストを使用して描画しようとしました

[context drawImage:arrow inRect:overlayView.frame fromRect:arrow.extent];

矢印は、CIFilter から取得される有効な CIImage です。CGImageに変換すると投影されるので有効です。

コンテキストは次のようになります。

overlayView が接続され、evr はそれで問題ありません。

2)その後、ViewControllerにデリゲートを設定して、GLKViewを使用してみました

  • draw in rectが呼び出されます
  • 基本的なopenglコードでglkviewの色を変更できます

*!! しかし、CGImageに簡単に変換できるサイズの有効な画像であっても、CIImageを描画することはありません

描画のコード (glkView: drawInRect 内) は同じです。

いくつかの提案?

0 投票する
1 に答える
894 参照

ios - dispatch_async を使用して/使用せずに GLKView drawRect から setNeedsDisplay を呼び出す

GLKViewオンデマンド レンダリングを使用してカスタムを構築しています。ほとんどの場合、ビューはタッチ イベントでのみ再描画されます (これは機能しています) が、ループで再描画したい短いアニメーションが時々あります。

私の最初の試みは次のようになりました:

私の理解Androidによると、これは画面をできるだけ早くクリアし続け、多くの「ジョー」を記録し続ける必要があるということでした。実際に何が起こるかというと、"Jo" はおよそ 1 秒に 1 回ログに記録され、ビューはまったくクリアされませんが、CPU使用は 0 のままです。

私が変われば

すべてが期待どおりに機能します。

とにかくメインスレッドから呼び出されると私が理解している限りでdrawRectは、なぜdispatch_async違いが生じるのでしょうか?

だから今、私は3つの質問があります:

  1. 「Jo」ログの間のその 1 秒間に何が起こっているのでしょうか?
  2. なぜdispatch_async違いを生んでいるのですか?
  3. 本番環境でこのアプローチを使用するのは悪い習慣ですか?

どうもありがとうございました!

編集:

もう一つわからないことがあります。

このメソッドを使用している[self setNeedsDisplay];と、メイン キューの他のすべての呼び出しが不足しているように見えます。タッチ イベントが発生しなくなり、RestKit からのコールバックが配信されなくなりました。[self setNeedsDisplay];どういうわけか、キューの最後ではなく最初に追加されますか?

0 投票する
1 に答える
455 参照

ios - iOS+OpenGL ES 2.0: update() と glkView() が GLKViewController によって呼び出されないのはなぜですか?

Ray Wenderlich スプライトの例を実行しようとしています。GLKViewController と GLKView をセットアップし、対応するデリゲート プロトコルのメソッドを実装しました。

しかし、これらのメソッドは GLKViewController によって呼び出されません! 誰かが私が間違っていることを知っていますか?

いくつかのバブルを下から上にアニメーション化するようにコードを変更しました。

GitHub からクローンをチェックアウトしてください:

https://github.com/salocinx/SpriteTestOpenGL

ありがとう!

0 投票する
1 に答える
414 参照

ios - GLKViewController を使用しない GLKView ジェスチャ認識エンジン

GLKView を使用するアプリケーションがあり、他の UI 要素はありません。私は GLKViewController を使用しておらず、使用する予定もありません。

アプリケーションの設定はすべて didFinishLaunchingWithOptions で行われます

私の AppDelegate インターフェイスは次のように定義されています。

このセットアップの一環として、GestureRecognizer (タップ、ピンチなど) をセットアップしようとしていますが、起動していないようです。

私のセレクターは次のように定義されています。

私が見つけることができるすべてのサンプル コードから、ジェスチャ認識機能は通常、viewDidLoad メソッド内でセットアップされます。ただし、GLKView はこのメソッドを提供していないようです。提供しようとしても呼び出されません。

おそらく、これは GLKViewController が提供するものですが、前述のように、GLKViewController は使用していません。

touchesBegan メソッド (およびその仲間) をオーバーライドできることに注意してください。これらのセレクターは期待どおりに起動されます。

私が間違っていること、または回避策があるかどうか、何か考えはありますか?

0 投票する
2 に答える
973 参照

ios - GLKView の上の UIVIew を変更するとクラッシュする

アプリケーションでランダムなクラッシュが発生しました。最終的に、UIVIew 要素を追加してその中心位置を変更すると、クラッシュが発生することがわかりました。クラッシュは IPad Air 2 では発生しませんが、シナリオは IPad Air でも一貫しています。UIView がオンの場合、クラッシュが発生し、ビューが削除されるとクラッシュが消えます。クラッシュは、次のスタックで非同期に発生します。

呼び出しを使用して OpenGL をレンダリングし[self.view needDisplay]、その直前に UIView を変更します。

この問題にどのように対処すればよいですか?

0 投票する
1 に答える
591 参照

ios - リクエストに応じて GLKView render を呼び出す

外部レンダラーを使用してアプリを作成していますが、リクエストによって再描画を呼び出すにはどうすればよいですか? たとえば、Android では、requestRenderer() と RENDERMODE_WHEN_DIRTY レンダリング モードを使用して実行できます。

次のコードがあります:

0 投票する
1 に答える
53 参照

ios - iOS: ユーザーが ADBannerView をクリックした後にアプリを切り替えると、OpenGL がクラッシュする

ADBannerView をサブビューとして持つ GLKViewController サブクラスの実装があります。広告の読み込みとレンダリングは問題なく行われます。OpenGL アプリケーションも問題なく動作します。広告をクリックすると、ポップアップが表示されます。GLKViewController では、デフォルトの一時停止動作が有効になっています。

GLKViewController の setPaused にブレークポイントを設定すると、広告ポップアップが表示されている間にアプリから切り替える(ホームをダブルタップして別のアプリを選択する) と、 setPaused:NO が呼び出されることがわかります。この動作は、ADBannerView ポップアップが表示されている場合にのみ発生し、それ以外の場合にアプリから切り替えた場合には発生しません。

iOS 9.1 で Xcode 7 によって生成されたデフォルトの OpenGL テンプレート アプリでも、上記の動作を再現できます。

1) これは正常ですか?

2) setPaused:NO が呼び出された後、GLKViewController が再描画され、アプリがバックグラウンドにある間に OpenGL 操作が発生するため、これにより一貫した再現可能なクラッシュが発生します。この時点で、アプリは (正しく) 強制終了されます。