問題タブ [cadisplaylink]
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 - AVCaptureベースのviewControllerでクラッシュする
UIViewController内でOpenGLVideoCaptureを使用するアプリに取り組んでいます
このコントローラーの最初の初期化で、コンソールに次のメッセージが表示されます。
メッセージはviewControllerinitの直後に表示されます
その後、別のコントローラーに切り替えてこのコントローラーを再起動すると、EXC_BAD_ACCESSを使用してViewControllerを2/4起動した後にクラッシュが発生します
asm出力はそれほど役に立ちません
ここにソースコードのいくつかの関連部分があります:
このクラッシュを追跡するための提案はありますか?
ios - iPad や iPhone の場合、CADisplayLink を使用するには 60fps でなければならないというのは本当ですか?
つまり、ハンドラーを 1 秒あたり 20 回呼び出すか、1 秒あたり 45 回呼び出すか、または 1 秒あたり 60 回呼び出すかを選択できますか?
それをシミュレートする1つの方法は、ハンドラーに与えられたタイムスタンプを使用して、「まだアクションの時間」であるかどうかを判断することだと思います-そうでない場合は、何もせずに単に戻りますか?
uinavigationcontroller - IOS : CADisplay / UIScrollview およびナビゲーション コントローラー
それで、素敵なGLKit 3DメニューをUIScrollviewで動作させることができました.別のView Controllerにプッシュして戻ってくるまで、人生は良いです.
完全にスムーズな動きなので、次のコントローラーに移動して戻ってきます。UIScrollview がバウンスまたはフローしませんか?
CADisplay Linkは、スクロールビューが移動および停止するたびに初期化およびnilされます。これは、別のコントローラーにプッシュして戻ってくるまでうまくいくようです。
ランダムにアイテムをクリックすると、スクロールビューが移動してすべてのコードが起動し、その後、元に戻ります。悲しいことに、ビューでこれを起動しようとすると、同じことをしないように見えました。
iphone - CADisplayLink タイムスタンプがデバイスで異常に動作する
ゲーム ループと特定のアニメーションについて、render: メソッドを最後に呼び出してから経過した時間間隔を知りたいです。
このために、CADisplayLink を使用して現在のタイムスタンプを取得し、最後の呼び出しのタイムスタンプを減算します。これにより、2 つのフレーム/呼び出し間の正しい時間間隔が得られるはずです。
シミュレーターでアプリを実行すると、間隔のさまざまな値が得られますが、問題ないようです。ただし、iPad でアプリを実行すると、間隔として 0.000 と 0.125 の 2 つの異なる値しか得られません。ほとんどの場合、これら 2 つの値は交互になります。
間隔を決定するために使用するコードを次に示します。
このコードは、render メソッドが呼び出されるたびに実行されます。
これは、間隔の正確な結果が得られないという iPad の制限ですか?
frame-rate - iPhone3GSおよびiPhone4のCADisplayLinkは、ランダムに60から40FPSに低下します
CADisplayLinkを使用して60FPSでgameLoopという関数を実行していますが、最初はアプリケーションが完全に実行されています。次に、ランダムな時間(5秒または1分である可能性があります)で、fpsは約40FPSに低下します。
フォーラムの検索、デバッグ、レンダリングの最適化、プロファイリング、アプリの分析を何日も行った後、gameLoopの最後の呼び出しからの経過時間を計算する数行を除いて、gameLoop関数からすべてを削除することにしました。CADisplayLinkがしばらくの間60FPSでgameLoopを呼び出し、その後gameLoopがほとんど何もしないときに40FPSで呼び出す理由がわかりません。
表示リンクを無効にして再起動する一時停止/一時停止解除機能を実装しました。表示リンクを再起動すると、ランダムにドロップするまで、アプリは再び60FPSで実行されます。
なぜこれが起こっているのかについて私に洞察を与えることができる人に事前に感謝します。
ios - CADisplayLink を使用した iOS OpenGL ES 1.1 のぎくしゃくしたアニメーション (しばらく再起動して修正)
OpenGL ES 1.1 と CADisplayLink を使用して 3D シーンをアニメーション化しています。iOS デバイスがごく最近再起動された場合、アニメーションは滑らかで、2 つの displayLink.timestamp 呼び出し間の時間差はかなり均一です。しかし、iOS デバイスを数時間または数日使用した後、私のアプリを数回実行すると、アニメーションがぎくしゃくし、タイム デルタが増加してから、低い値にリセットされて再び増加します。
このような:
2012-09-01 23:42:58.770 [2678:707] dt= 0.021139
2012-09-01 23:42:58.787 [2678:707] dt= 0.022183
2012-09-01 23:42:58.804 [2678:707] dt= 0.023223
2012-09-01 23:42:58.820 [2678:707] dt= 0.024270
2012-09-01 23:42:58.837 [2678:707] dt= 0.009679
2012-09-01 23:42:58.853 [2678:707] dt= 0.010750
2012-09-01 23:42:58.870 [2678:707] dt= 0.011766
2012-09-01 23:42:58.887 [2678:707] dt= 0.012806
2012-09-01 23:42:58.903 [2678:707] dt = 0.013847
2012-09-01 23:42:58.920 [2678:707] dt= 0.014890
2012-09-01 23:42:58.937 [2678:707] dt= 0.015933
2012-09-01 23:42:58.953 [2678:707] dt = 0.016976
2012-09-01 23:42:58.970 [2678:707] dt= 0.018011
2012-09-01 23:42:58.987 [2678:707] dt= 0.019055
2012-09-01 23:42:59.003 [2678:707] dt= 0.020097
2012-09-01 23:42:59.020 [2678:707] dt= 0.021143
2012-09-01 23:42:59.037 [2678:707] dt= 0.022181
2012-09-01 23:42:59.054 [2678:707] dt= 0.023222
2012-09-01 23:42:59.071 [2678:707] dt= 0.024288
2012-09-01 23:42:59.087 [2678:707] dt= 0.009624
2012-09-01 23:42:59.103 [2678:707] dt = 0.010728
2012-09-01 23:42:59.121 [2678:707] dt= 0.011763
2012-09-01 23:42:59.137 [2678:707] dt= 0.012808
2012-09-01 23:42:59.153 [2678:707] dt= 0.013847
2012-09-01 23:42:59.170 [2678:707] dt = 0.014891
2012-09-01 23:42:59.187 [2678:707] dt= 0.016002
2012-09-01 23:42:59.203 [2678:707] dt= 0.016979
2012-09-01 23:42:59.220 [2678:707] dt= 0.018016
2012-09-01 23:42:59.237 [2678:707] dt= 0.019042
2012-09-01 23:42:59.253 [2678:707] dt= 0.020099
2012-09-01 23:42:59.270 [2678:707] dt= 0.021138
2012-09-01 23:42:59.287 [2678:707] dt= 0.022185
2012-09-01 23:42:59.304 [2678:707] dt= 0.023222
2012-09-01 23:42:59.320 [2678:707] dt= 0.024265
2012-09-01 23:42:59.337 [2678:707] dt= 0.009681
2012-09-01 23:42:59.354 [2678:707] dt= 0.010736
その後、iOS デバイスを再起動すると、アニメーションは再びスムーズになります。
UpdateAnimation() 関数でゲーム関連の計算がほとんど行われていない場合でも、メニュー画面で問題が発生します。
何が起こっているのか、そして再起動するとしばらくの間この問題が常に解決される理由がわかりません。
iphone - iOS 6.0 の CADisplayLink がターゲットを保持しない
私はそのようなコードを持っています:
iOS 6.0 (5.1 ではこのコードは正常に動作します) では、このコード呼び出しには 2 つのバリアントがあります: EXC_BAD_ACCESS または「認識されていないセレクター "invoke" への呼び出し」。displayLinkWithTarget:selector: メソッドがターゲットを保持していないようです。[呼び出し保持]行を追加すると、コードが正常に動作するようになります。iOS 6.0のバグですか?
iphone - CADisplayLink および Touch イベントを使用した runloop イベントの順序は?
同じ実行ループ サイクルで、displayLink の前にタッチ イベントが呼び出されるかどうかを知りたいです。誰もこれに対する答えを知っていますか?
ios - UIScrollView が CADisplayLink を一時停止するのはなぜですか?
UIScrollView 内にある CAEAGLLayer に基づくビューがあります。スクロールを開始すると、openGL ビューの -draw メソッドを呼び出す CADisplayLink が呼び出されなくなります。
スクロール時に runloop の start / stop メソッドが呼び出されないことを確認しました。-draw メソッドは、スクロールが開始されるとすぐには呼び出されず、スクロールが終了するとすぐに呼び出されます。
UIKit は、スクロールが開始されるとすぐに CADisplayLink の起動を停止しますか?
表示リンクは、次のように実行ループに追加されます。
この実行ループ モードと UIScrollView が競合している可能性がありますか? UIScrollView がスクロールしている場合でも CADisplayLink を起動し続ける他の実行ループ モードまたは代替ソリューションはありますか?
どのアプリケーションにも複数の CADisplayLink が存在する可能性があると考えました。それは間違っていますか?
opengl-es - スクロールしていないときでも、dispatch_semaphore_wait() が常に YES を返すのはなぜですか?
Brad Larson は、スクロール ビューがスクロールしているときにフリーズする問題の解決策を提供しました。CADisplayLink
私の OpenGL ES 描画メソッドは a によって呼び出され、CADisplayLink
Brad の手法を試しましたが、うまくいきません。中心的な問題は、私の OpenGL ES ビューが によってホストされておりUIScrollView
、UがIScrollView
スクロールするとが起動しなくなるCADisplayLink
ことです。
Brad が説明した手法は、CADisplayLink
スクロール中でも (NSRunLoopCommonModes
デフォルトの runloop モードの代わりに追加することで) を起動し続けることになっています。忙しすぎる。
問題は、セマフォのトリックによってレンダリング コールバックが何があっても描画されないことです。
最初に、シリアル GCD キューとセマフォを、次のinitWithFrame
ように (メイン スレッドで) OpenGL ES ビューのメソッドに作成します。
表示リンクが作成され、次の場所に追加されNSRunLoopCommonModes
ます:
render コールバックは Brad の手法を実行します。
関数はdispatch_semaphore_wait
常に戻るYES
ため、render コールバックは決してレンダリングしません。スクロールしていないときでも。
ここで何か重要なことを見逃していたと思います。誰かがそれを指摘できますか?
編集:dispatch_sync
の代わりに呼び出す場合にのみ機能するようですdispatch_async
が、ブラッドによると、dispatch_async
ここでより良いパフォーマンスが得られます。