Re: Android版:60FPS以上で動かしたい ( No.1 ) |
- 名前:SUIMA 日時:2018/02/27 18:52
Android版ではなく、Windows版の知識をベースの答えになってしまうのですが・・・
通常はメインループ内で
while(true){
計算処理();
描画処理();
}
この様な動作になっていると思いますが
while(true){
計算処理();
計算処理();
描画処理();
}
とすることで、処理タイミングにムラはできますが、120FPS相当の処理が可能かと思います。
|
Re: Android版:60FPS以上で動かしたい ( No.2 ) |
- 名前:管理人 日時:2018/02/28 01:29
少し調べたところ垂直同期を切ることができそうです
( なんとなく先入観で Android は垂直同期を切れないような気がしていましたが、ちゃんと設定するための API がありました・・・ )
実際に機能するのか試してみますので、数日ほどお待ちください m(_ _)m
( SUIMAさんの方法の方がテアリングが発生しないので良いかもしれませんが )
|
Re: Android版:60FPS以上で動かしたい ( No.3 ) |
- 名前:管理人 日時:2018/02/28 23:23
|
Re: Android版:60FPS以上で動かしたい ( No.4 ) |
- 名前:was-blue.0793 日時:2018/03/06 18:57
テスト版で垂直同期を切ることができるようになっていたことを確認しました。
(参考までに処理の内容もありますがXperia XZ、Androidバージョン7.0ではおよそ180FPS〜200FPSで動作します)
しかし、垂直同期を切って処理したい場合と垂直同期を待ってもいい処理で垂直同期を待つかどうか切り替えられるようにしたいのですが、
WaitVSyncが実装されていないのか、WaitVSyncを使っても垂直同期を待つことができません。
こちらもご対応いただけると幸いです。
|
Re: Android版:60FPS以上で動かしたい ( No.5 ) |
- 名前:管理人 日時:2018/03/07 00:48
すみません、Android環境では垂直同期を検出する機能が無いので、WaitVSync は未実装となっています
申し訳ありませんが ScreenFlip で代用してください m(_ _;m
|
Re: Android版:60FPS以上で動かしたい ( No.6 ) |
- 名前:BayLeaf 日時:2018/03/07 09:07
横槍で失礼します。
> 管理人さん
現在 SetWaitVSyncFlag は初期化前でしか効果がないと思うのですが、
SetWaitVSyncFlag を初期化以降でも行うことができれば
WaitVSync がなくても ScreenFlip の処理を分ける必要がなくなり便利になると思います。
SetWaitVSyncFlag を初期化以降でも使用できるようにすることはできないのでしょうか?
|
Re: Android版:60FPS以上で動かしたい ( No.7 ) |
- 名前:was-blue.0793 日時:2018/03/07 21:13
>>管理人さん
SetWaitVSyncFlagを切った時点でScreenFlipで垂直同期が待たれなくなります。
>>BayLeafさん
Windows版ではDirectX9以降の仕様から初期化前にしか使えなかったと記憶しておりますが、
Android版ではOpenGL ESを使っていることから、Android版限定で初期化以降も使えるようになりそうに思います。
Windows版とAndroid版で動作を統一する方針があるとしたら、初期化以降も使えるようにする実装は難しくなりそうですが……
|
Re: Android版:60FPS以上で動かしたい ( No.8 ) |
- 名前:管理人 日時:2018/03/08 01:22
すみません、Android版では was-blue.0793さんが仰られている通り初期化後でも垂直同期を待つかどうかを変更することができるので
初期化後でも SetWaitVSyncFlag で垂直同期を待つかどうかを変更できるようにしたつもりだったのですが、バグで変更できないようになっていました
Android版のみ DxLib_Init の後でも SetWaitVSyncFlag が使用できるように修正したバージョンをアップしましたので、
お手数で申し訳ありませんが再度こちらをダウンロードしてください m(_ _;m
https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用
https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.exe // Android版 x86用
> BayLeafさん
> SetWaitVSyncFlag を初期化以降でも使用できるようにすることはできないのでしょうか?
今回 Android版限定で初期化後でも SetWaitVSyncFlag が使用できるようにしました
Windows版は DirectX9以降、初期化後に VSYNC待ちをするかどうかの設定が変更できなくなってしまったので
Windows版は今まで通り初期化後に使用することはできません( DXライブラリが DirectX7 を使用していた頃は
Windows版も途中変更に対応していたのですが・・・ )
> was-blue.0793さん
> SetWaitVSyncFlagを切った時点でScreenFlipで垂直同期が待たれなくなります。
すみません、バグだったので DxLib_Init 後も使用できるように修正しました m(_ _;m
> Windows版とAndroid版で動作を統一する方針があるとしたら、初期化以降も使えるようにする実装は難しくなりそうですが……
個人的には初期化後も設定を変更できる仕様にしたいと思っているので、動作の統一は崩れてしまいますが
Android版だけでも初期化後に設定を変更できるようにしました
|
Re: Android版:60FPS以上で動かしたい ( No.9 ) |
- 名前:BayLeaf 日時:2018/03/08 07:46
ありがとうございます。
Android版で最新バージョンを試しましたところ、
初期化後でも SetWaitVSyncFlag が使用できることを確認しました。
Windows版に関しても了解です。分岐させて処理しておきます。
なお、今回のスレッドは Android版に関してのことでしたので
Windows版に関しては考慮しないで聞いたので特に問題ないです。
突然のお邪魔で済みませんでしたがご対応ありがとうございました。
|
Re: Android版:60FPS以上で動かしたい ( No.10 ) |
- 名前:was-blue.0793(解決) 日時:2018/03/08 22:24
BayLeafさん同様、SetWaitVSyncFlag関数が初期化後でも使えることを確認しました。
ご対応ありがとうございます。
>>BayLeafさん
私はWindows版では垂直同期を待つかどうか切り替えるためにWaitVSync(1)を使っていました。
フラグ変数を用意しておき、そのフラグがtrueの時にこの関数が呼ばれるようにして垂直同期を待つかどうかを切り替えるようにしています。
|