問題タブ [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.

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

ios - AVCaptureベースのviewControllerでクラッシュする

UIViewController内でOpenGLVideoCaptureを使用するアプリに取り組んでいます

このコントローラーの最初の初期化で、コンソールに次のメッセージが表示されます。

メッセージはviewControllerinitの直後に表示されます

その後、別のコントローラーに切り替えてこのコントローラーを再起動すると、EXC_BAD_ACCESSを使用してViewControllerを2/4起動した後にクラッシュが発生します

asm出力はそれほど役に立ちません

ここにソースコードのいくつかの関連部分があります:

このクラッシュを追跡するための提案はありますか?

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

ios - iPad や iPhone の場合、CADisplayLink を使用するには 60fps でなければならないというのは本当ですか?

つまり、ハンドラーを 1 秒あたり 20 回呼び出すか、1 秒あたり 45 回呼び出すか、または 1 秒あたり 60 回呼び出すかを選択できますか?

それをシミュレートする1​​つの方法は、ハンドラーに与えられたタイムスタンプを使用して、「まだアクションの時間」であるかどうかを判断することだと思います-そうでない場合は、何もせずに単に戻りますか?

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

uinavigationcontroller - IOS : CADisplay / UIScrollview およびナビゲーション コントローラー

それで、素敵なGLKit 3DメニューをUIScrollviewで動作させることができました.別のView Controllerにプッシュして戻ってくるまで、人生は良いです.

完全にスムーズな動きなので、次のコントローラーに移動して戻ってきます。UIScrollview がバウンスまたはフローしませんか?

CADisplay Linkは、スクロールビューが移動および停止するたびに初期化およびnilされます。これは、別のコントローラーにプッシュして戻ってくるまでうまくいくようです。

ランダムにアイテムをクリックすると、スクロールビューが移動してすべてのコードが起動し、その後、元に戻ります。悲しいことに、ビューでこれを起動しようとすると、同じことをしないように見えました。

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

iphone - CADisplayLink タイムスタンプがデバイスで異常に動作する

ゲーム ループと特定のアニメーションについて、render: メソッドを最後に呼び出してから経過した時間間隔を知りたいです。

このために、CADisplayLink を使用して現在のタイムスタンプを取得し、最後の呼び出しのタイムスタンプを減算します。これにより、2 つのフレーム/呼び出し間の正しい時間間隔が得られるはずです。

シミュレーターでアプリを実行すると、間隔のさまざまな値が得られますが、問題ないようです。ただし、iPad でアプリを実行すると、間隔として 0.000 と 0.125 の 2 つの異なる値しか得られません。ほとんどの場合、これら 2 つの値は交互になります。

間隔を決定するために使用するコードを次に示します。

このコードは、render メソッドが呼び出されるたびに実行されます。

これは、間隔の正確な結果が得られないという iPad の制限ですか?

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

frame-rate - iPhone3GSおよびiPhone4のCADisplayLinkは、ランダムに60から40FPSに低下します

CADisplayLinkを使用して60FPSでgameLoopという関数を実行していますが、最初はアプリケーションが完全に実行されています。次に、ランダムな時間(5秒または1分である可能性があります)で、fpsは約40FPSに低下します。

フォーラムの検索、デバッグ、レンダリングの最適化、プロファイリング、アプリの分析を何日も行った後、gameLoopの最後の呼び出しからの経過時間を計算する数行を除いて、gameLoop関数からすべてを削除することにしました。CADisplayLinkがしばらくの間60FPSでgameLoopを呼び出し、その後gameLoopがほとんど何もしないときに40FPSで呼び出す理由がわかりません。

表示リンクを無効にして再起動する一時停止/一時停止解除機能を実装しました。表示リンクを再起動すると、ランダムにドロップするまで、アプリは再び60FPSで実行されます。

なぜこれが起こっているのかについて私に洞察を与えることができる人に事前に感謝します。

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

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() 関数でゲーム関連の計算がほとんど行われていない場合でも、メニュー画面で問題が発生します。

何が起こっているのか、そして再起動するとしばらくの間この問題が常に解決される理由がわかりません。

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

iphone - iOS 6.0 の CADisplayLink がターゲットを保持しない

私はそのようなコードを持っています:

iOS 6.0 (5.1 ではこのコードは正常に動作します) では、このコード呼び出しには 2 つのバリアントがあります: EXC_BAD_ACCESS または「認識されていないセレクター "invoke" への呼び出し」。displayLinkWithTarget:selector: メソッドがターゲットを保持していないようです。[呼び出し保持]行を追加すると、コードが正常に動作するようになります。iOS 6.0のバグですか?

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

iphone - CADisplayLink および Touch イベントを使用した runloop イベントの順序は?

同じ実行ループ サイクルで、displayLink の前にタッチ イベントが呼び出されるかどうかを知りたいです。誰もこれに対する答えを知っていますか?

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

ios - UIScrollView が CADisplayLink を一時停止するのはなぜですか?

UIScrollView 内にある CAEAGLLayer に基づくビューがあります。スクロールを開始すると、openGL ビューの -draw メソッドを呼び出す CADisplayLink が呼び出されなくなります。

スクロール時に runloop の start / stop メソッドが呼び出されないことを確認しました。-draw メソッドは、スクロールが開始されるとすぐには呼び出されず、スクロールが終了するとすぐに呼び出されます。

UIKit は、スクロールが開始されるとすぐに CADisplayLink の起動を停止しますか?

表示リンクは、次のように実行ループに追加されます。

この実行ループ モードと UIScrollView が競合している可能性がありますか? UIScrollView がスクロールしている場合でも CADisplayLink を起動し続ける他の実行ループ モードまたは代替ソリューションはありますか?

どのアプリケーションにも複数の CADisplayLink が存在する可能性があると考えました。それは間違っていますか?

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

opengl-es - スクロールしていないときでも、dispatch_semaphore_wait() が常に YES を返すのはなぜですか?

Brad Larson は、スクロール ビューがスクロールしているときにフリーズする問題の解決策を提供しました。CADisplayLink

私の OpenGL ES 描画メソッドは a によって呼び出され、CADisplayLinkBrad の手法を試しましたが、うまくいきません。中心的な問題は、私の 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ここでより良いパフォーマンスが得られます。