トップページ > 記事閲覧
Android版:描画が重くても入力や内部処理の60FPSを保証したい
名前:そめ 日時: 2021/07/06 17:52

https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4995 ここを拝見させていただきました Windows-Androidで状況が違うものと存じておりますが このトピックで管理人様が提案されている描画を別スレッドにしての描画関数呼び出しは (並列による競合の有無によらず)Android版ではできないようですが こちらに関しては描画をメインスレッドにし、内部処理をサブスレッドにすることで 同等の恩恵を得られるのでこれはひとまずクリアできました さて、描画が重すぎた場合でも内部レート(入力や物理現象)60FPSを保証したいのですが ProcessMessageがメインスレッド縛りになっており 描画もメインスレッド縛りになっていますので 描画が遅れる=ProcessMessageの周期が遅れる=入力の60FPSが保証できない という状態になっております 上記のトピックにて >ゲームパッドの入力に関しては常に「関数を呼んだ時の最新情報を取得できる」となっています > >キーボードの入力に関しては > > <デフォルトの動作> > ProcessMessage を実行しないと入力情報が更新されない( 標準APIを使用 ) > > <SetUseDirectInputFlag( TRUE );を DxLib_Init の前に呼んでいる> > 関数を呼んだ時の最新情報を取得できる( DirectInputを使用 ) とありますが、 Androidにおいても同様にProcessMessageによらずタッチパッドの情報やその他入力をリアルタイムで取得する方法は無いでしょうか (エミュレータ上でGetTouchInputがProcessMessageに依存しているのを確認しました) もしくは別の方法で入力60FPS保証する手法があればいいのですが何かいい方法は無いでしょうか よろしくお願いいたします
メンテ

Page: 1 |

Re: Android版:描画が重くても入力や内部処理の60FPSを保証したい ( No.1 )
名前:そめ 日時:2021/07/06 18:00

なお現在は、 ・描画を10工程くらいにわける ・それぞれ過去にかかった時間から予測時間をたてる ・16msに収まる予測の工程まで描画を行い ・全10工程が終わらなかった場合はFlipScreenをせずに、メインループ先頭のProcessMessageに戻り、続きは次回フレームで描画する こんな具合にやっておりますが 分割できない重い工程の存在と大きくぶれる実行時間がネックになっており、 頻繁にProcessMessage呼び出しの60FPS保証が崩れています
メンテ
Re: Android版:描画が重くても入力や内部処理の60FPSを保証したい ( No.2 )
名前:名無三 日時:2021/07/06 19:38

素直に別のライブラリやAPI使ったほうが良い気がします(1敗)
メンテ
Re: Android版:描画が重くても入力や内部処理の60FPSを保証したい ( No.3 )
名前:そめ(解決済) 日時:2021/07/07 01:37

ちょっとアイデアが出てきました 描画工程の分割が難しいと思っていたのですが 例えばモデルを描画するfor文にて MV1DrawModel直下にProcessMessage呼び出しを追加するだけの簡単な作業で ほぼリアルタイムな入力更新ができそうな気がしてきました 一度解決済みとさせていただきます お騒がせしました
メンテ

Page: 1 |

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

   クッキー保存