Petitverse
ゲストさん (
ログイン
)
ログイン
コミュニティ内検索
コミュニティ一覧
Petitverse ご利用ガイド
Petitverse からのおしらせ
プチコン 非公式コミュニティ
プレイ日記
うょリウム(元 SPDX)
◆UTOEg1c1vr.B
2020/11/13 0:37
プチコン始めたころに一番「?」ってなったのがPI()でした。
当時(初代)の説明書には
「パイを返す」
とだけ書かれていたのです。
プログラム知識もゼロでした。
次にベロベロバーだったのがVSYNCです。初見で「画面更新周期の同期」とか言われてもこの説明全くわっけわかんないんだからもー。
コメント
はる
2020/11/19 21:02 ネタバレ
◆75Vh4SY8TdKS
>なので、前回のVSYNCから次のVSYNCまでの間に1フレーム以上経っていなければ、待つ時間は全く同じになります。
1フレームの長さは同じだと思いますが、
WAITは処理がWAITが実行されてからの時間なので、
VSYNC 0→処理→VSYNC 1
WAIT 0→処理→WAIT 1
だったら、
WAITの方が、
処理の時間(1フレーム未満)の分だけ待ち時間は長くなる気がしました。
まあ1フレーム未満なので人間に分かるような差ではなさそうですが。
>その部分だけを描画し直したとしてもVSYNCがないとちらつきますよ。
さすらいの名無しさんもおっしゃっているように、
"画面を更新したときのみ"は括弧の中にも適用されるものでは。
これは日本語の問題になりますが。
このコメントはネタバレを含んでいます。
このコメントをひらく
さすらいの74
2020/11/19 23:30 ネタバレ
◆LWMA5UzCJb3e
「画面を更新したときのみ『CLSやGCLS(もしくはその部分だけを描画し直す)』を実行」というつもりで言いました。分かりづらくてすみません。
このコメントはネタバレを含んでいます。
このコメントをひらく
Na
2020/11/19 23:31 ネタバレ
◆QoELVrBXBQCI
>WAITの方が、
>処理の時間(1フレーム未満)の分だけ待ち時間は長くなる気がしました。
待ち時間は全く変わりません。
WAIT 1は「その瞬間から1/60秒間待つ」ではなく、「その瞬間から1回目の画面更新まで待つ」だからです。
例えばWAITを実行したとき、次の画面更新まで残り16msであれば16ms待ち、残り1msであれば1ms待ちます。
実際に検証するとしたらこんな感じでしょうか、
1秒間に何回VSYNCまたはWAITを呼び出したかを数えます
START=MILLISEC
CNT=0
VSYNC 0 '←WAIT 0
REPEAT
FOR I=1 TO 10000:NEXT '処理のつもり
CNT=CNT+1
VSYNC 1 '←WAIT 1
UNTIL MILLISEC-START>=1000
?CNT
>"画面を更新したときのみ"は括弧の中にも適用されるものでは。
あー、読み直したら確かにそうですね。見落としていました。
いずれにしても、場合によっては
画面を更新したときのみ実行するとか、
その部分だけを描画し直すとか
だけでは常に解決できるとは限らないと考えます。
このコメントはネタバレを含んでいます。
このコメントをひらく
さすらいの名無し
2020/11/20 17:17 ネタバレ
◆LWMA5UzCJb3e
> WAIT 1は「その瞬間から1/60秒間待つ」ではなく、「その瞬間から1回目の画面更新まで待つ」だからです。
「その瞬間から1回目の画面更新まで待つ」はVSYNCでは?WAITは「その瞬間から1/60秒間待つ」で合ってると思います。
このコメントはネタバレを含んでいます。
このコメントをひらく
はる
2020/11/20 20:41 ネタバレ
◆75Vh4SY8TdKS
>WAIT 1は「その瞬間から1/60秒間待つ」ではなく、「その瞬間から1回目の画面更新まで待つ」だからです。
画面更新という概念がVSYNCとは別であるということですかね。
自分は上のさすらいの名無しさんのコメントと同じように考えました。
このコメントはネタバレを含んでいます。
このコメントをひらく
あまさとしおん
2020/11/20 23:18
◆mzDKTVUAtwqE
「1フレームの長さが微妙に違う」が完全に誤解されて草
プチコン3号(約59.83fps)とプチコン4(60fps)で1フレームの長さが違うという意味でwaitを使うかvsyncを使うかで1フレームの基準になる時間が変わるわけではないです
あまさとしおん
2020/11/20 23:19
◆mzDKTVUAtwqE
mkIIも正確な60fpsだった気がしますがうろ覚えでした
あまさとしおん
2020/11/20 23:29
◆mzDKTVUAtwqE
初代/mkII、ミリセカンド変数ないから1フレームの実時間を検証する方法がない気がする
(物理的な)ストップウォッチだと押すタイミングがずれたりするので精度がダメだし。
ugly777
2020/11/21 3:26
◆B7lOIJDWuOqi
結論:
VSYNCとWAITの違いは初心者でなくともつまづく。
Na
2020/11/21 10:05 ネタバレ
◆QoELVrBXBQCI
>「その瞬間から1回目の画面更新まで待つ」はVSYNCでは?WAITは「その瞬間から1/60秒間待つ」で合ってると思います。
VSYNCは「前回のVSYNCの後から数えて1回目の画面更新まで待つ」
WAITは「その瞬間から1回目の画面更新まで待つ」
です。
どちらも画面更新のタイミングまで待つという点では同じです。
ただ回数を数え始める基準が違うだけです。
>画面更新という概念がVSYNCとは別であるということですかね。
そういうことです。
プログラムが画面を書き換えたとき、それがすぐに画面に反映されるわけではなく、まずVRAM(ビデオメモリ)が書き換えられます。
そして動いているプログラムとは関係なく、1秒に60回、VRAMの中身が画面に表示されます。
うろ覚えですが確かこんな感じの仕組みだったと思います。
その画面の更新に合わせるための命令がVSYNCとWAITのはずです。
このコメントはネタバレを含んでいます。
このコメントをひらく
さすらいの名無し
2020/11/21 10:12 ネタバレ
◆LWMA5UzCJb3e
こういうことじゃないんですか?
このコメントはネタバレを含んでいます。
このコメントをひらく
さすらいの名無し
2020/11/21 10:18 ネタバレ
◆LWMA5UzCJb3e
>プチコン3号(約59.83fps)とプチコン4(60fps)で1フレームの長さが違うという意味でwaitを使うかvsyncを使うかで1フレームの基準になる時間が変わるわけではないです
それは知ってる。ついでにいうとBIGでも違うはず。
>VSYNCは「前回のVSYNCの後から数えて1回目の画面更新まで待つ」
WAITは「その瞬間から1回目の画面更新まで待つ」
「前回のVSYNCの後から数えて1回目の画面更新まで待つ」と「その瞬間から1回目の画面更新まで待つ」は同じことでは?
その理屈だとVSYNCとWAITが全く同じ役割になってしまう。
WAITは「その瞬間から丁度1f待つ」ってことでは?
このコメントはネタバレを含んでいます。
このコメントをひらく
Na
2020/11/21 10:19
◆QoELVrBXBQCI
>mkIIも正確な60fpsだった気がしますがうろ覚えでした
パソコンでbpm120の4分音符を並べたmidiファイル作って、
mkIIでVSYNC30とBEEPを繰り返すプログラムを作って、
同時にスタートさせたところ、約3分くらいで1回分ずれました。(mkII側が1回遅い)
30*359/180=59.833...fps
new3dsで実行したからですかね?
さすらいの名無し
2020/11/21 10:30
◆LWMA5UzCJb3e
3号以前は全部約59.83fps説
Na
2020/11/21 10:35 ネタバレ
◆QoELVrBXBQCI
VSYNCとWAITで結果が変わるのはこういう場合だけです
逆に言えば処理に1フレーム以上かかるような重いプログラムじゃなければ、メインループにWAITを使っても何の違いもありません。
3号のWAITのヘルプにも「指定回数分の垂直同期が来るまでプログラム停止」と書いてありますよ
WAITは一定時間待つ命令ではないです。
このコメントはネタバレを含んでいます。
このコメントをひらく
ugly777
2020/11/21 11:01
◆B7lOIJDWuOqi
こうかな?
ゲームのロード中に最低nフレームは情報(ヒント等)を表示させたいなら、
VSYNCの方が合っているかもしれませんね。
はる
2020/11/21 21:53 ネタバレ
◆75Vh4SY8TdKS
>プチコン3号(約59.83fps)とプチコン4(60fps)で1フレームの長さが違うという意味でwaitを使うかvsyncを使うかで1フレームの基準になる時間が変わるわけではないです
3号も60FPSだと思っていたので衝撃的です。
BIGはどうなんですかね。
>プログラムが画面を書き換えたとき、それがすぐに画面に反映されるわけではなく、まずVRAM(ビデオメモリ)が書き換えられます。
なるほど。
VRAMというのはLinuxとフレームバッファみたいなもんですかね。
まあそんなようなものがあるのだろうなというのは分かっていましたが、
それのフレームレートってたったの60FPSなんですね。
思っていたよりも低いなと思いました。
>WAITは一定時間待つ命令ではないです。
これも衝撃的です。
このコメントはネタバレを含んでいます。
このコメントをひらく
うょリウム(元 SPDX)
2020/11/23 11:56
◆UTOEg1c1vr.B
いつの間にか稀に見る賑わいスポットが出現している件。
密ですね。
つまり
VSYNC 60で1秒計れるは間違いだったのでしょうか。
あまさとしおん
2020/11/23 13:20
◆mzDKTVUAtwqE
WAITの仕様、なるほど、指定時間ではなく指定した回数フレームを待つのか
3号のVSYNCの長さが微妙なのは「時計の石と、画面更新の石が独立してて、特にかみ合わせを考慮していないから」的な事情だったりします。
温度によってほんのり変わったりするそうです。
とMIKIさんとかがミバで言ってた
あまさとしおん
2020/11/23 13:22
◆mzDKTVUAtwqE
たしかれい氏と会話してたやつだ
1
2
コメントを書く
こちらは「プチコン3号」「プチコンBIG」など、
プチコンシリーズ
に関する話題を扱った
コミュニティです
プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
ユーザー登録なしで書き込みができます
秘密の合い言葉は成りすましの防止 (
トリップ機能
)、書き込みの編集時の本人認証に使用します
秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります
normal
happy
like
surprized
frustrated
puzzled
画像
ネタバレ
投稿する
-
WEB PATIO
-