フルスクリーンモードが遅い
furafura  2014/11/07(Fri) 10:20
たびたび面倒をお掛けしております。

QH55/Mという解像度2560*1600のAtomタブレットで動作確認する機会がありまして、その結果が理解出来ないので質問させていただきます。
そもそもそのPC性能から考えて、高フレームレートは望めないとは思います。
releaseビルドにして、フルスクリーンモードとウィンドウモードで試しました。

私の理解ですと一般論として、フルスクリーンの方が高速であると思います。試しにPSO2のベンチマークを実行しました。解像度も処理も違いますが、その傾向が出ました。
しかし、Siv3Dの公開版では異なる傾向を示しました。

フルスクリーン9-12に対し、ウィンドウモードが13-17 FPSで、ウィンドウモードが勝っております。これは、単に画像を1枚出している程度の処理です。

そこで、チュートリアル→フレームレートとほぼ同等のもので試した所、FPS表示のみにもかかわらず、フル12ウィンドウ22という感じで、やはりウィンドウモードが勝っております。

PSO2のベンチと動作環境は同じですし、ほぼよけいなソフトは稼働しておりません。多分、新品PCより軽い環境です。

考えられる原因に何があるでしょうか?

以下、無駄とは思いますが試した内容です。
フルスクリーンの解像度は、即値でも試しております。

//<ウィンドウモード時>
Window::SetStyle(WindowStyle::NonFrame);
//Window::Resize(val);
Window::Resize(2560, 1600);
Window::SetPos(0, 0);

while (System::Update())
{
font(Profiler::FPS(), L"fps").draw();
}

//<フルスクリーン時のループ以外>
Point val = {0,0};
vector<Point>::iterator iter;
std::vector<Point> reso = Graphics::GetFullScreenSize();
/* フルスクリーンの最大解像度を求める */
for(iter = reso.begin(); iter != reso.end(); iter++){
if(val.x * val.y < (*iter).x * (*iter).y) {
val = *iter;
}
}
Window::SetFullscreen(true, val);
Reputeless  2014/11/07(Fri) 14:43
ご報告ありがとうございます。
確かに、一般的にはフルスクリーンのほうがパフォーマンスに優れます。

ご報告の件について、こちらの手元にあるタブレットでも今後調査します。

なお、次期バージョン (Siv3D NEXT) で、フルスクリーンまわりの実装を少し変更したので、
もしかしたら改善しているかもしれません。
furafura  2014/11/08(Sat) 17:06
お忙しいところ回答下さってありがとうございました。
フルスクリーンにつきましては、NEXT待ちとします。

よけいな事を申しますが、Siv3Dでコマンドライン引数を処理する方法は提供されておりますか?
探した限りでは見つかりませんでした。
Reputeless  2014/11/08(Sat) 19:46
>コマンドライン引数

ご提案ありがとうございます。
以前から要望がありましたので、次期バージョン (Siv3D NEXT) で実装したいと思います。

Siv3D での動作は未確認ですが、現時点では Win32 API の GetCommandLine() が使えないでしょうか。
furafura  2014/11/19(Wed) 18:56
済みません、返信に気がつくのが遅くなりました。

なるほど、確かに、CommandLine系APIがありましたね。
私としては取得出来れば大丈夫です。
ありがとうございました!
furafura  2014/12/02(Tue) 23:37
Siv3D November 2014でのコマンドライン引数への対応、ありがとうございました。
また、QH55/Mでのフルスクリーンモードでのフレームレートも改善されたと捉えております。(フルスクリーン18-20ぐらいでウィンドウモードより1フレーム程度勝る)

その上で御報告させていただきますと、
QH55/Mの場合、クレードル・電源コードからの供給と、バッテリでの稼働がございます。フルスクリーン動作しておりますと、電源供給先が切り替わる時、モード切り換えソフトにフォーカスが奪われてしまいます。その状態以降は、「フルスクリーンモードで動作していた場合」のSiv3Dで動くソフトは制御が利かなくなるようです。(May 2014でも同じ)

今の所、問題が出ないウィンドウモードで行くつもりではありますが、対処する方法はございますでしょうか?
Reputeless  2014/12/05(Fri) 14:36
フルスクリーンモードの復帰は将来実装予定です。
優先度を上げて対応します。
furafura  2014/12/06(Sat) 09:32
回答下さいましてありがとうございました。
期待したいと思います。

Siv3D November 2014によるGUI機能、素晴らしい出来ですね。
こちらも期待が高まります。

- WEB PATIO -