- 1 名前:名前は開発中のものです。 mailto:sage [2007/02/08(木) 18:48:37 ID:3LKtrtoG]
- そんなわけで勝手に3スレ目だ。
無職ニートたちのゲーム製作を生暖かく見守るスレです。 開発は概ね無料のソフト(ツール)を使って行います。 でも有料ソフトが駄目ってことはないと思います。 有志の参加を、心よりお待ち申し上げております。 ガンガンアップすれ! 前スレ NEETの俺が無料ソフトだけでゲームを作るスレ 2 pc10.2ch.net/test/read.cgi/gamedev/1158740343/ ゲムデヴWiki gamdev.org/w/ あぷろだ gamdev.org/up/upload.php
- 402 名前:名前は開発中のものです。 mailto:sage [2007/06/29(金) 21:03:48 ID:YWkjkJ7e]
- めずらしく技術系な話で盛り上がってきましたなw
ティアリングはVSYNCに同期せずに描画実行したときに起きる現象じゃないのかな DirectX9ならCreateDeviceでVSYNC同期とるように一応設定できたと思う フレーム落ちなら動作が追いつかないときに何も対策をとらなければ起きると思うけど
- 403 名前:名前は開発中のものです。 mailto:sage [2007/06/29(金) 21:09:36 ID:YWkjkJ7e]
- 失言。フレーム落ち間違ってますw
動作が追いつかないときに、フレームを飛ばして追いつかせることですな・・orz
- 404 名前:名前は開発中のものです。 mailto:sage [2007/06/29(金) 21:17:21 ID:Ysi+fy2W]
- 個人的にはSleep()で待つのは好きじゃないな(´・ω・`)
Sleep()の精度も信用できないし、それに高性能PCほど描画を増やして滑らかにしたほうがいいと思うし。 例えば、60Hzのモニタで60FPS出る場合と、120Hzのモニタでも120FPS出るなら、 後者の方が滑らかに見えるよ。(Vsync同期させる場合) 好みだけど、Vsync同期+移動量タイマ制御方式がいいんじゃない? 1ループの時点でどのくらい移動するのかをタイマを使って計算するの。 んで必ず1ループで描画。ただしVsyncを待ってもらう。 内部的にどうなってるのか知らないけど、プログラム的には描画とループは同期してない(ややこしい表現だが)。 けど逐一移動する量を計算してるからどのタイミングでも、どのPCでも、他のアプリケーションが邪魔して処理落ちしても、 一定の速度でキャラクタが動く事になるよ。 例えば、10秒で10センチ動くものがあったとして、 ある環境では1センチずつ10コマ描画するけど、 ある環境では5センチずつ2コマしか描画できない。 けど、ちゃんと10秒で10センチ動くことは保障されてるわけ。
- 405 名前:名前は開発中のものです。 mailto:sage [2007/06/29(金) 21:41:37 ID:Ysi+fy2W]
- >>401
すでに>>402さんが答えてくれてますけど、ティアリングは描画の最中が表示される事なので Vsync非同期のときに起こり得ます。 Vsyncを同期するかどうかってのはコーディングの時点で決まります。 (グラボの設定で強制的に非同期にする事も可能ですが。) なので処理が追いつかないとかでティアリングは起きませんし、 同期させるコーディングなのに同期しなくなったとかも普通はありません。 あと、>>399の3番目の、Vsync非同期で出来るだけFPSを稼ぐ方式ですが、 これは結局はリフレッシュレート以上は描画されないんです。当然ですがハードウェアは超えられません。 なので出来ればFPSをリフレッシュレート*2以上は出したい所です。 FPSが低いと、Vsync非同期ですので、 前の画像が残っている瞬間と次の画像が見える瞬間と入り乱れてるわけですから、見た目的にガクガクに見えます。 自分の場合は特に気にする方なので、60Hzに対して80FPSくらいでも感じます。 実際には120FPS出ようが200FPS出ようが描画タイミングとは非同期なので、 たまたま次の描画と描画のタイミングが重なることの確率が高くなるってだけなので、 いくらFPSを上げようとも根本的にはカクつきます。
|

|