トップページ > 記事閲覧
最新verでテアリングが発生してしまいます
名前:ジンセイ 日時: 2016/02/07 15:56

久しぶりにDXライブラリのバージョンを上げようと思い 最新バージョンにしてみたところテアリングが発生するようになりました。 色々試したところどうやら3.13d〜3.13fの間の修正でテアリングが発生するようになっているようです。 # 3.13d以前では起きなくて3.13f以降で現象発生。 ただ、この現象を動画に撮ろうと思って60FPSでデスクトップキャプチャを行ったところ、 画面上ではテアリングが起きているのに なぜかキャプチャした動画を再生してもテアリングは起きていませんでした。 なんとなくディスプレイなどの環境依存の問題な気はするのですが、 以前のバージョンではこのようなテアリングは一切発生したことはなく、 3.13f以降のバージョンにすると明らかに発生するようになっていて違いは明らかです。 原因など何かわかることはありますでしょうか?
メンテ

Page: 1 |

Re: 最新verでテアリングが発生してしまいます ( No.1 )
名前:管理人 日時:2016/02/08 03:57

3.13d 〜 3.13f となりますと、丁度 Direct3D 11 を使用するようになったタイミングですので、 恐らく Direct3D 11 ではテアリングが発生してしまうということなのだと思います 私の個人的な印象では SetWaitVSyncFlag( FALSE ) ; を実行して VSYNC 待ちを OFF にした場合 Direct3D 9 に比べて Direct3D 11 はテアリングが酷いと感じるのですが、ジンセイさんは SetWaitVSyncFlag( FALSE ) ; を実行して VSYNC 待ちを OFF にしていますでしょうか? ともあれ、とりあえず DxLib_Init の呼び出しの前に SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; という記述を追加すれば以前と同じように Direct3D 9 が使用されるようになり、テアリングも 発生しなくなると思いますので、よろしければお試しください m(_ _)m
メンテ
Re: 最新verでテアリングが発生してしまいます ( No.2 )
名前:ジンセイ 日時:2016/02/08 19:16

早速のご回答ありがとうございます。 SetWaitVSyncFlag()は呼び出していません。 試しにSetWaitVSyncFlag(TRUE)を呼び出してみましたがやはりテアリングは発生します。 SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; を追加すると発生しなくなりましたのでとりあえずこれで様子をみようと思います。 ちなみに今日他のPC、ディスプレイでも試してみましたが同じようにテアリングは発生しました。 以下、テアリングが確認できたコードです。 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { SetGraphMode(640, 480, 16); SetWindowSizeChangeEnableFlag( TRUE ); SetWindowSizeExtendRate( 1.0 ); ChangeWindowMode( TRUE ); DxLib_Init(); SetAlwaysRunFlag( TRUE ); int y = 100; int up = 0; while(CheckHitKeyAll() == 0) { SetDrawScreen( DX_SCREEN_BACK ) ; DrawBox(0, 0, 640, 480, GetColor(0, 255, 0), TRUE); y += up ? -10 : 10; if(y < 100) { y = 100; up = 0; } else if(y > 380) { y = 380; up = 1; } DrawCircle(320, y, 240, GetColor(255, 0, 0)); ScreenFlip() ; if( ProcessMessage() == -1 ) { break ; } } return 0; }
メンテ
Re: 最新verでテアリングが発生してしまいます ( No.3 )
名前:管理人 日時:2016/02/11 14:02

ご返答ありがとうございます 手元の環境で載せて頂いたコードを実行してみましたが、テアリングは発生しませんでした なので、断言はできませんがジンセイさんのお察しの通り環境に依存する問題かもしれません DXライブラリが Direct3D 11 に対応して1年近く経つのですが、何となくまだ Direct3D 9 の方が Direct3D 11 より安定して動作する環境が多いように感じます( Direct3D 11 は『Direct3D 11 に 対応している』筈の環境でも正常な動作をしないことがある ) 正常に動作すれば Direct3D 9 より起動時間が短くなり動作も若干高速に行えるのですが… Direct3D 7 が WindowsVista 以降でかなり動作が重く且つ不安定になったので、何れ Direct3D 9 より Direct3D 11 の方が安定して動作する環境が多くなると思うのですが、もし『まだ Direct3D 9 で良い』と ご判断されましたら SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; を使用するようにしてください ( もしくは、若干手間ですがオプション画面などで Direct3D 9 を使用するか Direct3D 11 を使用するかを  選択できるようにしてください m(_ _;m )
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存