ドラゴンクエストクローンを作ろう (746レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

431
(1): 2006/07/15(土)00:21 ID:J160mIqM(1/10) AAS
試してみました。
640x480一回の転送で約5ms、60FPSで1フレ約17msですから余裕ですね。
何か勘違いしていました。申し訳ありません。

この際環境依存が激しいDirectXを捨ててDIBに乗り換えようかと
思ったのですが、私が知る限りではDIBは垂直同期を取る方法が
なかったような気がします。
スクロールするゲームではなるべくテアリングは避けたいのですが、
省1
433: 2006/07/15(土)01:16 ID:J160mIqM(2/10) AAS
垂直同期はゲームの進行処理の同期のこととは違います。
ハードの信号なのでソフトだけでは解決出来ません。

詳しくはこちらをどうぞ。
本文を「ティアリング」で検索して下さい、丁度その説明があります。
外部リンク[html]:ascii24.com
(古い記事ですがティアリング、垂直同期辺りは昔話ではありません)
436: 2006/07/15(土)07:56 ID:J160mIqM(3/10) AAS
>>435
ですから、垂直同期をとるには専用のAPIが必要なんです。
垂直同期信号を検地する為のAPIが無ければ何時垂直同期信号が
来ているのか知る術はありません。
そのAPIが私の知る限りではDirectX以外に無いのです。

標準のWin32APIにDirectDrawのWaitForVerticalBlankやGetScanLineに
相当する機能を持つAPIがあれば良いのですが、ご存知ですか?
438: 2006/07/15(土)09:26 ID:J160mIqM(4/10) AAS
>>437
実際はFlipやPresentの中で自動的に垂直同期を待ってからフリップ
されるのでWaitForVerticalBlankやGetScanLineを使う機会は無い
かもしれませんが、要はDIBに垂直同期を待ってからスクリーンに
画像を転送すき仕組みがあるかどうかです。
無い場合はテアリングが発生してしまうのでスクロール処理がある
2Dのゲームには向いていないということになります。
440
(1): 2006/07/15(土)10:24 ID:J160mIqM(5/10) AAS
>>439
デスクトップが希望のリフレッシュレートになっていないと
見苦しいことになりますが、一応ウインドウで動くアプリでも
垂直同期は関係あります。
試しに同期を取るアプリと取らないアプリをうpしましたので
お時間があれば試してみて下さい。
(画面のリフレッシュレートが60Hzだと違いが特に分かります)
省5
441: 2006/07/15(土)10:31 ID:J160mIqM(6/10) AAS
>>425
論点を >>431 で少しずらしてしまいましたが、テアリングを気に
しないのであれば >>430 の指摘通り >>427 の条件からDirectXは外れます。
誤ったレスをしてしまって申し訳ありません。
443: 2006/07/15(土)12:29 ID:J160mIqM(7/10) AAS
>>442
>自分で作った垂直同期とりの関数かなんかをいれると

それはDirectXを使わない方法ですか?
もしDirectXを使わないで垂直同期をとっているのでしたら
是非その方法を教えていただけないでしょうか。
私もDIBで済むのならDIBにしたいので・・・
445
(1): 2006/07/15(土)17:06 ID:J160mIqM(8/10) AAS
>>444
>>425-428
この話題は

(質問)DQ1みたいなのDXライブラリ使わなくても作れるの?

(私)DXライブラリ関係なくDirectXが使えてその他条件が揃う言語ならどれでも作れる

省3
447: 2006/07/15(土)17:45 ID:J160mIqM(9/10) AAS
>>446
はい、速度についてはDQ1程度ならDIBでも問題ないという結論が出たので、
今はDIBで垂直同期信号(VSYNC)を待った画面出力が可能かどうかという話に
なっています。(違うかもしれませんが今の私の関心事はそれです)

私が知る限りではDirectX以外で垂直同期信号を待ったり、帰線消去期間中か
どうかを調べたりする方法は無かったと思うのですが、442の方が432,435
辺りでDirectXが無くても垂直同期を検知する手段がある、というような発言を
省1
449
(2): 2006/07/15(土)21:18 ID:J160mIqM(10/10) AAS
>>448
がたつきがあるのは私の組んだプログラムのタイマー精度が原因です。orz
がたつきも非常に問題ですが、テアリング=がたつきではありません。

タイマーの精度を上げて、がたつかないようにしましたので、申し訳ありませんが
お時間のあるときにもう一度試してみて下さい。今度は Non_VSync.exe ではっきり
テアリング(前のフレームと今のフレームの画像が混ざってしまう現象)が
確認できると思います。(タイミングが合い、運良く確認できない場合もあります
省2
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.023s