トップページ > 過去ログ > 記事閲覧
ウィンドウモードのちらつき
名前:おー 日時: 2010/03/06 16:51

初心者です。質問があります。 ウィンドウモードで描画しているグラフィックに、 ウィンドウを横断する「ちらつく線(棒状でもあります)が 生じ、その対応に苦慮しております‥ ■「ちらつく線」の症状: ・処理の負担に比例するように、位置が上下 ・線の上部、下部で、スクリーンの表裏が違う(ように見えます‥?) ・フルスクリーン時では生じない ・ウィンドウの縦位置を変更しても、線の縦位置は変わらない どうにも手に負えません‥ どなたか原因か、解決法をご存じでしたら、ご教授いただけますでしょうか。 以上、よろしくお願いいたします。 ■処理概要: int WINAPI WinMain( ... ){ ; ChangeWindowMode( TRUE ); SetWindowSize( size_x , size_y ); SetDrawScreen( DX_SCREEN_BACK ); while( ProcessMessage()==0 ) { ; 描画処理 ; ScreenFlip(); ClsDrawScreen(); ; 以後、ループ } }

Page: 1 |

Re: ウィンドウモードのちらつき ( No.1 )
名前:いっち 日時:2010/03/06 17:49

"ChangeWindowMode"を"DxLib_Init"の前に実行しても現象は再現しますでしょうか? また、環境依存の可能性もありますので、開発環境の詳細とプログラム実行時に作成されるLog.txtの全文を記載して下さい。 私は見てもわかりませんが、わかる人がいらっしゃるかもしれません。
Re: ウィンドウモードのちらつき ( No.2 )
名前:おー 日時:2010/03/07 06:04

ご回答ありがとうございました。 別PC、異なる動作モードで試していますが、やはり同様の現象が生じます。 ただ、ご提案の事項から、ログから新たな対策のヒントが得られそう‥?なのと、 初期化の順番の危うさも見えてきました。 しばらく、対策の試行を続行してみます。
Re: ウィンドウモードのちらつき ( No.3 )
名前:管理人 日時:2010/03/15 23:38

恐らくティアリング現象だと思います ScreenFlip の処理の途中でビデオカードからモニタへの出力の走査が入ってしまうために あるラインを境に上下で映っている内容に差異が生じる現象です 主に搭載されているグラフィックスデバイスの性能があまり高くないときに発生します DXライブラリは標準でティアリングを極力回避できるような処理をしていますので、 それでも発生してしまう場合はちょっと手がありません・・・すいません・・・
Re: ウィンドウモードのちらつき ( No.4 )
名前:おー 日時:2010/03/22 16:12

管理人様、ご回答いただき、ありがとうございます。 実は、DxLibのバージョンが古く、更新(3.00)したところ症状は改善されました‥ ただ、処理速度が不安定になり、コマ墜ちが目立つようになりました‥ 現行、以下のような対応で、ちらつき症状をだしながらも、 処理動作が速い(安定している)モードを並行して搭載することにしています。 SetWaitVSyncFlag( FALSE ); {// ループ ScreenFlip(); ; 描画 ; WaitVSync(0); } ※ちらつき線の位置をウィンドウの枠外で発生させられれば、解決‥かも‥? グラフィックデバイスはよくわからないのですが、 ビデオカードのことでしょうか? 私のノートPCは購入後、素のままで使用していますので、ビデオカードはありません(のかな?)。
Re: ウィンドウモードのちらつき ( No.5 )
名前:管理人 日時:2010/03/22 17:46

最新バージョンではなく 3.00 でしょうか? 新しいバージョンの方が色々不具合が解消されていたりしますので、 なるべく最新バージョンをお使いになってください あと、SetWaitVSyncFlag( FALSE ) ; を使用する場合は WaitVSync( 0 ) ;の直後に ScreenFlip() ; をした方がちらつきが発生しにくいかもしれません ただ、完全に無くすのは難しいと思います グラフィックスデバイスについてですが おーさんの仰るとおり最近ではビデオカードを搭載していない環境も多くなりましたので、 画像処理を行うモノ( CPUに内蔵されたGPUだったりチップセットと一緒になっている 画像処理機能だったり独立したビデオカードだったり )の総称としてグラフィックスデバイスと 最近私は呼んでいます、多くの場合その性能は ビデオカード > チップセット内蔵 or CPU内蔵 となっています、ビデオカードやチップセット内蔵のグラフィックス機能の中でも性能の高いもの、低いものがありますが、 チップセット内蔵系の最高性能のものが、ビデオカードでの最低性能より少し良い、くらいです
Re: ウィンドウモードのちらつき ( No.6 )
名前:おー 日時:2010/03/22 20:50

おや? ふと見れば3.02‥ 失礼いたしました‥ ‥ただ‥どうもソフト制作で使用しているPC自体が動作不良を起こしている可能性がみえてきました。 (他の(相対的に低スペックでもある)PCでの動作では処理が安定しています) とりあえずは、VSyncの妙な使用法は、回避できそうです。 ※わたしが例に挙げたWaitVSync(0)の位置は、あちこちに置いて試した挙句、  疲れてそのままにしてあったものです‥  ご指摘の通り、場所によってちらつきの度合いは変化しますが、  こちらの都合のよい場所には、決して移動はしてくれません。 ところで、世のソフトに付記されている「必要、推奨とされる動作環境」に、 ビデオカードやビデオメモリの性能が列挙されています。 例えばそういった付記が必要となった場合、どのように調べたらよろしいのでしょうか? わたしのPC、GetSystemInfo()の結果では、総ビデオメモリ、空きビデオメモリともに、0MBでした。
Re: ウィンドウモードのちらつき ( No.7 )
名前:管理人 日時:2010/03/29 06:37

> ところで、世のソフトに付記されている「必要、推奨とされる動作環境」に、 > ビデオカードやビデオメモリの性能が列挙されています。 > 例えばそういった付記が必要となった場合、どのように調べたらよろしいのでしょうか? 詳しいことはわかりませんが、恐らくゲーム会社が作成したソフトと個人や少数の非プロが作成した ソフトで記載する内容を決定するまでの流れは違うと思います まず、ゲーム会社の場合は予め最低動作環境と推奨動作環境を決定しておいて、製品が完成する時期が近づいたら 最低動作環境を用意してその環境で動作するように調整、推奨動作環境を用意してその環境でほぼ処理落ち等が無いように調整、 というような作業を行うと思います つまり、完成した後動作環境を調べるのではなくて、最初から動作環境を決めておくと思います 対してアマチュアのソフトの場合は完成してから動作環境を決めることも多いと思いますが、 プロとは違って様々な環境を用意すること自体難しいことが多いので、 開発に使用していたPCのスペックをそのまま推奨動作環境として、最低動作環境は自分の知識から 「多分これくらいあれば動くだろう」と思われる環境を最低動作環境としたり、もしくはテストプレイを してくれた仲間の中で一番性能の低い環境を最低動作環境としたりと、もしかしたら違うかもしれませんが、 恐らく多くの場合こんな感じだと思います 必要なビデオメモリの算出は、LoadGraph や LoadDivGraph で読み込んでいる画像のサイズと数からある程度 割り出すことができます 読み込む画像が png や jpeg 等で圧縮されていても、読み込んだ後は一律1ピクセル最大4バイトになりますので 画像1枚に必要なビデオメモリはおよそ   画像の横幅×画像の縦幅×4byte になります( 640x480 の画像一枚で約1.17メガバイト )、更に表画面と裏画面用のビデオメモリが必要で、   表画面のビデオメモリの最大消費ビデオメモリ    ・ウインドウモードの場合      デスクトップの横幅×デスクトップの縦幅×4    ・フルスクリーンモードの場合      SetGraphMode で設定した画像サイズの横幅×縦幅×4   裏画面のビデオメモリの最大消費ビデオメモリ     SetGraphMode で設定した画像サイズの横幅×縦幅×4 となります、例えばウインドウモードでデスクトップの画面設定が 1280x1024 の 32bitカラー、 SetGraphMode の画面設定がデフォルトの 640x480 の場合、表画面と裏画面用のビデオ消費メモリは 1280 * 1024 * 4 + 640 * 480 * 4 = 6471680byte 1メガバイトは1048576バイトなので 6471680 / 1048576 = 6.171875メガバイト となり、これらの計算から大体どのくらいビデオメモリがあれば動作するかを割り出します ただ、Direct3D のありがたい機能のお陰で計算上はビデオメモリが足りなくても動作してしまったり、 逆にビデオメモリが十分足りているはずなのに表示が変になってしまったりすることもあるので、 あくまで目安として表記しておく、程度です 因みに、ビデオ機能がビデオカードとして独立して搭載されていないノートPC等の場合は ゲームをプレイすることを前提とした高性能ノートPCでもない限り最新ノートPCですら7〜8年前のビデオカードと 同性能かそれ以下の性能であることも珍しくないので、動作環境に「ノートPCでの動作は保障しません」と 記載することも多いです
Re: ウィンドウモードのちらつき ( No.8 )
名前:おー 日時:2010/04/03 12:12

まずは返答、お礼のあいさつが遅くなってしまったことをお詫びいたします。 大変、失礼いたしました。 また、ご多忙とは存じますが、拙な問いに丁寧なご解説をくださり、ありがとうございました。 (裏画面の事情は妙に納得‥) 当方、手慰みにソフト制作をおこなっておりますが、動作を確認できる周囲のPCは、 すべて無垢なノート(まま、同スペック、VistaHome、非プロ仕様)です。 現在、制作の興味は「ほかの動作環境ではどう動く?」につき、 先日の「ビデオカード、グラフィックメモリって?」、との質問を呈するにいたりました。 ご解説いただいた内容を確認したうえ、その他調べました結果、 おそらくはVistaを標準搭載した(一般的なノート)PCが実装するスペックやメモリで 十分に動作するとは思われますが、 やはり、公開なり配布するなりの手段にて、手早く挙動を確認するのが現実的か、 とも考えます。 だいぶDxLib関連から話題がそれてしまいました‥ 最後に、今後のDxlibの更なる革新を期待しております。 では。

Page: 1 |