Re: [報告] VirtualBox上で実行するとDxLib_In ( No.1 ) |
- 名前:bitbug 日時:2012/05/13 09:14
済みません。題名が途中で切れてしまいました。
正しくは、
[報告] VirtualBox上で実行するとDxLib_Init()でハングアップ
です。
|
Re: [報告] VirtualBox上で実行するとDxLib_In ( No.2 ) |
- 名前:管理人 日時:2012/05/16 00:43
ご報告ありがとうございます
VirtualBox は使ったことがないのですが、ご報告内容から判断すると垂直同期状態の
取得ができていないみたいです
( 垂直同期を検出するまでループ、ということろで無限ループになっているようですので )
件の箇所で0.5秒以上垂直同期が検出できなかったら GRH.FrameTime を 16 にするように
処理を変更しました( 現在 GRH.FrameTime は使用していないので0でも問題ないのですが一応 )
その変更を加えたバージョンをアップしましたので、よろしければお試ください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|
Re: [報告] VirtualBox上で実行するとDxLib_In ( No.3 ) |
- 名前:bitbug 日時:2012/05/17 06:50
ご返信ありがとうございます。
平日はなかなか時間が取れないので、この週末に試してご報告いたします。
|
Re: [報告] VirtualBox上で実行するとDxLib_In ( No.4 ) |
- 名前:bitbug(解決) 日時:2012/05/19 08:27
上げていただいたバイナリの方ではうまくいかなかったので、ソースをコンパイルして見た所、
最初の「// VBlank が検出できなかったらテストをスキップする」の所ではスキップされず、
else節に入ってしまい「// VBlank が終わるのを待つ」のfor(;;)ループのところでも無限
ループしてしまうようなので、そこでも同様のスキップ処理を入れたら動きました。
具体的には以下のようにしてみました(//FIXのコメント部分)。とりあえずこれで回避できそうです、ありがとうございました。
// VBlank が検出できなかったらテストをスキップする
if( Raster.InVBlank == FALSE )
{
GRH.FrameTime = 16 ;
}
else
{
// VBlank が終わるのを待つ
for(;;)
{
GRH.Direct3DSwapChain9Object->GetRasterStatus( &Raster ) ;
if( Raster.InVBlank == FALSE || WinData.Win32Func.timeGetTimeFunc() - Time > 500 ) break ; //FIX
}
// ここでもVBlank が検出できてなかったらテストをスキップする //FIX
if (Raster.InVBlank == TRUE) //FIX
{
GRH.FrameTime = 16 ;
}
else
{
// カウント取得
Time = WinData.Win32Func.timeGetTimeFunc() ;
// VBlank がくるのを待つ
for(;;)
{
GRH.Direct3DSwapChain9Object->GetRasterStatus( &Raster ) ;
if( Raster.InVBlank == TRUE ) break ;
}
// VBlank が終わるのを待つ
for(;;)
{
GRH.Direct3DSwapChain9Object->GetRasterStatus( &Raster ) ;
if( Raster.InVBlank == FALSE ) break ;
}
// 経過時間を保存
GRH.FrameTime = WinData.Win32Func.timeGetTimeFunc() - Time ;
}
}
|
Re: [報告] VirtualBox上で実行するとDxLib_In ( No.5 ) |
- 名前:管理人 日時:2012/05/20 14:52
ご検証ありがとうございます
垂直同期が検出できない( 常に OFF )かと思ったら、逆で常に垂直同期が来ている( 常に ON )状態だったのですね (・・;
載せていただいたプログラムを少しだけ変更してライブラリの方に反映させていただきました
その状態で作成したライブラリファイルをアップしましたので、
もしご必要でしたらお使いください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|
Re: [報告] VirtualBox上で実行するとDxLib_In ( No.6 ) |
- 名前:bitbug(解決) 日時:2012/05/21 10:24
取り急ぎ、上げていただいたソースでDxGraphics2.cppだけ差し替えてリビルドして実行。
問題なく動作することを確認しました。
特殊な環境での現象にもかかわらずご対応いただき、ありがとうございました。
|