トップページgamedev
240コメント91KB

PCで描画と内部処理の非同期処理ってどうやんの?

■ このスレッドは過去ログ倉庫に格納されています
0001(;´д⊂ヽ02/04/29 16:14ID:Gsu.P7Dk
PCならではの可変フレームレートで、かつ安定したキー入力とか演算の微分処理とか
実装したいんですが、具体的に、どういう風な構造にすればいいのか全然わかりません助けて

キー入力とかタイミングに厳しい処理を別スレッドで回すとして
描画担当スレッドはどーすればいいんでしょう?
(描画途中で別スレッドにより内部変数が書き換えられるケースが出てきますよね?)
0002名前は開発中のものです。02/04/29 16:19ID:???
みんな頑張ってるから
0003名前は開発中のものです。02/04/29 16:20ID:???
書き換えられたくないタイミングをマスクするしかおもいつかんのだが。
0004名前は開発中のものです。02/04/29 16:56ID:???
多重に持てば良いんじゃないの
0005名前は開発中のものです。02/04/29 16:57ID:???
単発スレ立てんなボケ。
0006名前は開発中のものです。02/04/29 16:59ID:???
ローカルルールをよく読めやGW厨

お約束
 3.簡単な質問やあいまいな(問題点の良く分からない)質問は汎用Q&Aスレッドへ
0007(;´д⊂ヽ 02/04/29 17:23ID:Gsu.P7Dk
すんません。単発つーか、結構深いテーマな気がしたんで
本でも扱ってないし

2Dゲーみたく、スプライトレジスタみたいのだとマスクとか多重化も
簡単なんだけど、3Dゲーでクラスだと色々面倒でねぇ

可変フレームレートつってもリフレッシュレートの関係で上限は120と
しても問題ないわけで、なんか上手く処理できんものんかと思ったわけです

ゲーム内ではよくある、1フレーム前の位置参照するような場合でも
前フレームが何ミリ秒前なのか可変だと困ると思うのです
仮に計算で逆算するにしても、ソウルキャリバーの剣の軌道なんかの
多段数の前フレーム参照は難しいかなと思うのです

そんな訳で僕の中では、上限120FPSで、処理落ちするときだけ描画を飛ばす
ような完全非同期ではない方法が正解だと思うのですが、ご意見聞きたいなぁと
0008名前は開発中のものです。02/04/29 17:26ID:???
>>7
それでいいんじゃない。
はい終了。
0009名前は開発中のものです。02/04/29 17:30ID:???
でも海外のFPSとかで、ロケット砲なんかのビルボードな煙軌道なんかは、そうでもない気がする
0010名前は開発中のものです。02/04/29 17:45ID:???
内部にカウンタ持ってるか、数フレーム前まで位置を保存しときゃ済む話だろ
0011名前は開発中のものです。02/04/29 17:58ID:???
ジサクジエン乙カレ。
>>1=3=7=9
0012名前は開発中のものです。02/04/29 17:59ID:???
3Dゲームに限らず、殆どのゲームは描画で多くの時間を費やしてる。
描画についていけないならデータ更新する、という>>7の方法でよい。
yaneSDKあたりにそれ関係の記事があったと思うので興味があればどうぞ。

それと、3Dゲームだと描画速度がFPS30位でも結構滑らかに見えてしまうので、
データ更新速度はFPS120ほど高くなくてもよいと思うよ。

質問内容がアレだったこともあるので、削除依頼は出しておいたほうが吉かと。
ログには残しておきたい内容だけれどねぇ。
0013名前は開発中のものです。02/04/29 18:08ID:???
>>7みたいに 1/120秒の内部ループはゲームによっては処理が重いかもしれん
だからといって1/60秒単位で変数を更新した場合、60FPSより早い描画だと、描画側が困っちゃうよね

ミサイルの先端はどんどん進むのに、後端(保存された数フレーム前情報)は1/60単位でしか更新されないと
煙の全長長くなっちゃうよね
(気付かないだろうけど、マシン毎になんか結果がことなるプログラムって気持ち悪い)

じゃぁミサイルの先端位置から後端の位置が計算できるか つーとそうでない場合もあるし
0014名前は開発中のものです。02/04/29 18:19ID:???
PCの場合スペック自慢つーかベンチ代りだったりするので
FPSが60頭打ちじゃ、手抜き!とか叩かれる。技術力もないみたいだし

キャラは同じ位置のままで再描画だけして、Over60FPS表示にしる!
どーせ人間の目では60fps以上区別つかないって言うしー
でも、中には区別できる人もいる罠
0015名前は開発中のものです。02/04/29 18:38ID:qMxpqTZM
Windowsアプリだと、描画はプライマリスレッド以外関与するなって鉄則があると思うんだけど
これはゲームにも当てはまるのか。
WindowのGUIをプライマリスレッドで管理し、
Direct3Dの描画をワーカースレッドで管理なんてOK?
軽く試してみたら、微妙に不具合が起きたのだけど。
■ このスレッドは過去ログ倉庫に格納されています