問題タブ [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 - iPhoneでCADisplayLinkを使用したOpenGLESビューでの一定速度の回転
私のOpenGLESクラスとコードは、AppleのGLES2Sampleコードサンプルから派生しています。これらを使用して、一定の回転速度であると予想される1つの軸を中心にスムーズに回転する3Dオブジェクトを表示します。現在、アプリは1のフレーム間隔を使用しており、OpenGLビューが描画されるたびに(EAGLViewのdrawView
メソッドで)、モデルを特定の角度で回転させます。
実際には、これはまともな結果をもたらしますが、完全ではありません。回転中にオブジェクトの大部分が見えなくなると、レンダリングが速くなり、回転の角速度が一定になりません。私の質問は、どうすればスムーズにすることができるかということです。
すべての提案を歓迎しますが、私はすでに1つのアイデアを持っています。それは、0.5秒ごとにレンダリングFPSを測定し、それに基づいて再描画するたびに回転角を調整することです。しかし、あまり良くないように聞こえます。これについてどう思いますか。また、この問題をどのように処理しますか。
ios - UIScrollView が壊れ、OpenGL レンダリングでスクロールが停止する (関連する CADisplayLink、NSRunLoop)
解決メモ、質問ではありません。
UIScrollView
に登録されているCADisplayLink
場合、tick の起動を防止することで、OpenGL レンダリングを一時停止します。CADisplayLink
NSDefaultRunLoopMode
しかし、NSRunLoopCommonModes
これを解決するために使用するUIScrollView
と、バーストスクロール時にスクロールが停止します。また、一度停止すると、再度スクロールすることはありません。(壊れた)
また、他のスレッド/ランループに CADisplayLink を登録すると (この質問の回答で説明されているように: UIScrollView scrolled 時に CADisplayLink が更新を停止します)、UIScrollView の動作の中断は減少しますが、排除することはできません。
iphone - CADisplayLink を使用しても 40 fps でスタックしますか?
最初は NSTimer を使用していましたが、フレーム レートが毎秒 40 フレームに固定されるという問題に遭遇しました。CADisplayLink を使用して問題を解決する方法について読みました。しばらくは動作しているように見えましたが、最近、アプリが 60 で起動し、しばらくすると (約 5 ~ 20 秒)、アプリが 40 ~ 41 fps で実行され始め、そこで動かなくなります。そして、オブジェクトが見えないときに描画が少なくなるようにカリングしていますが、それでもそこにとどまります. 問題を一瞬 (約 10 秒) 解決するように見える珍しい方法は、iPhone の下部からワイヤーを外してから、もう一度接続することです。明らかに、これは理想的ではありませんが、特定の値または何かをリセットするかのように、なぜこれが発生し、なぜ多少修正されるのか疑問に思っています。どんな助けでも大歓迎です、ありがとう。
iphone - CADisplayLink が NSTimer と同様に動作する、フレームレートのバグ
私は CADisplayLink を実装しましたが、多くの描画がある場合は fps を 40 にロックし、後で描画がはるかに少なくなったとしてもそこから抜け出せないという点で NSTimer と同じように動作します。これは itouch 3 と itouch 4 で発生します。レンダリングには openGL を使用し、サウンドには openAL を使用しています。どうしたの。助けてください!!!
iphone - iPhone/iPad、OpenGL ES、CADisplayLink
主にiPadでOpenGL ESを使い始めたばかりで、答えが見つからない問題に気づきました。最初に、同じウィンドウで別々のレンダラーを使用して 2 つの EAGLView を使用してみました。基本的に、XCode の OpenGL ES サンプル プロジェクトを考えますが、2 つの EAGLViews と 2 つのレンダラーなどを使用します。現在、これはシミュレーターでは機能していないようです。ビューの 1 つしか表示されません (レンダリング コードを実行しているように見えますが、ビューは 1 つだけです)。 openGL で表示されます) が、デバイス (iOS 4.2 を使用する iPad) で実行すると動作し、少なくとも次の質問につながります。
レンダリングの更新は、これらの両方のビューで CADisplayLink を使用してトリガーされます。ただし、これはいくつかの問題を引き起こします。ほとんどの場合、しばらくするとビューの 1 つでの更新が停止し、その CADisplayLink のトリガーが停止します。これはデバイス上でのみ発生し、シミュレーターでは発生しません。CADisplayLinkの代わりにタイマーを使用するか、一方のビューでタイマーを使用し、もう一方のビューでDisplayLinkを使用することで「修正」できますが、何が原因なのか知りたいです。私はこのような表示リンクを作成しています(両方のビューで):
self.displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(drawView:)];
[displayLink setFrameInterval:animationFrameInterval];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
最後の質問は、私が気づいた奇妙なことについてです。Xcode で提供されている OpenGL ES サンプル プロジェクトを iPad シミュレーターで実行し、ビューの幅を 760 未満に変更すると、画面に何もレンダリングされません。幅のみに関係しますが、高さはどのような方法でもサイズ変更できます。これはシミュレーターでのみ発生し、デバイスでは発生しません。
質問は基本的に、上記のことがバグなのか、機能なのか、それとも単に間違っているのかということです。
ありがとう /j0h
iphone - この場合、CADisplayLinkが機能しないのはなぜですか?
動いているボールのアニメーションにNSTimerの代わりにCADisplayLinkを使用したいのですが、CADisplayLinkでは機能しません。次のコードの問題は何でしょうか?
iphone - CADisplayLink問題のアニメーションiphonexcode
みなさん、こんにちは。私はフランス語なので、英語が下手です。したがって、私の問題は、CADisplayLinkを使用して1つの画像を60 fpsでアニメーション化する場合は正常に機能しますが、2つの画像をアニメーション化する場合は40fps近くになります。それで、なにかお手伝いできますか。私を助けてください 。ありがとうございました。
iphone - CADisplayLink が例外を飲み込む
CADisplayLink を使用すると、例外が飲み込まれてしまうことに気付きました。
このコードを実行すると、次の出力が生成されます。
これは CADisplayLink の正しい動作ですか? スタックを巻き戻して何も起こらなかったふりをするのではなく、例外が発生したときにプログラムを中止させる方法はありますか?
objective-c - AppleOpenGlESサンプルのCADisplayLinkと静的変数マジック
XCodeのOpenGlESサンプルが機能する理由を説明してください。drawFrameメソッドを開始するために次のことを行います(blablaViewController.m内-名前はプロジェクトの名前に依存します):
そして、drawFrameメソッド内で次のことを行います。
私はまだObjectiveCの多くを知りませんが、このtransY変数がリセットされ、同じ方法でインクリメントされる方法は非常に奇妙です。GL_MODELVIEWマトリックスは、シフトされる前にIDにリセットされるため、openglのどこかに累積値を保持できるとは思いません。
staticキーワードはここでのトリックですか?何かが一度静的であると宣言された後、Objective Cは将来のすべての変数宣言を無視しますか?
助けてくれてありがとう!
cocoa - 異なる画面で Cocoa を描画するとパフォーマンスが低下する
私はドキュメント ベースのアプリを持っています。各ドキュメントには、Cocoa のみを使用して (かなり連続的な) 描画を行う NSScrollView を備えた 1 つのウィンドウがあります。
図面を呼び出すには、次のコードで概説する CVDisplayLink を使用しています。
レンダリング コード:
これはうまく機能し、アニメーションはバタフライです... 1つの画面で。
1 つのドキュメントをメイン画面から 2 番目のモニターに移動するとすぐに、アニメーションは四角い車輪の車と同じくらい滑らかになります。1 つ (または複数) のドキュメントが 2 番目の画面にある場合、すべてのドキュメントでアニメーションが低下します。メイン画面にドキュメントがなく、セカンダリ画面にドキュメントがない場合、アニメーションも低下します。
複数の種類のモニターと複数の Mac でこれを試しましたが、常にこれらの結果に終わります。これが CVDisplayLink 関連の問題ではないことを確認するために、NSTimer (CVDisplayLink の方が望ましい) を使用してレンダリングを試みましたが、同じ結果が得られました。
私は何を間違っていますか?どんな助けでも大歓迎です。
編集:スレッドベースの描画も使用してみましたが、同じ結果が得られました。
編集:while
スレッドベースの描画 (基本的にはループ) が 1 つの画面のみで非常にうまく機能するという点で、ある程度の進歩を遂げました。(2 番目または 1 番目のいずれか)。