1.2 バックバッファ 画面をちょっとだけ綺麗にする まず前提として 描画命令は1つずつ実行されている ►キャンバスに紙を1枚ずつ貼っていくイメージ それぞれの命令の実行時間はゼロではない ►すンごい速いけど時間は確実に消費している ゲームではすンごい数の描画命令を実行する ►弾幕ゲームなら弾だけで数千数万 ►エフェクトとかも含めたら・・・? 1.2 バックバッファ 2 従来のプログラムの欠点 従来のプログラムでは画面にチラツキが起こる ►描画命令が増えると全て終わるまでの時間が長い ►処理途中が目に見えてしまう可能性がある この形式ではアニメーションが再生されません 以下のPPTX形式ならアニメーションを再生できます http://nanzanmmc.net/_media/pc/lecture/game/12_backbuffer.pptx ※実際はもっと素早い 1.2 バックバッファ 3 そこでバックバッファ バックバッファとは表示されない画面のこと ►裏画面で描画処理を終わらせてから表画面と交換 ►表示されている画面には常に完成画面だけが映る この形式ではアニメーションが再生されません 以下のPPTX形式ならアニメーションを再生できます http://nanzanmmc.net/_media/pc/lecture/game/12_backbuffer.pptx 表画面 裏画面 ※見えるのはこっちだけ ※描画処理はこっち 1.2 バックバッファ 4 バックバッファの使い方 バックバッファを使うように設定する ►フレーム外で DxLib_Init() より後に書こう if (DxLib_Init()) return -1; // バックバッファを使うように設定する SetDrawScreen(DX_SCREEN_BACK); 表画面と裏画面を交換する処理を追加する ►この処理は ScreenFlip() が担っている ►フレーム内で描画処理が終わった後に書こう LoadGraphScreen(x, y, "player.bmp", FALSE); if (ScreenFlip()) break; if (ProcessMessage()) break; } 1.2 バックバッファ 5 用語の勉強 オフスクリーンバッファ ►裏画面のこと ►バックバッファも同じ意味 ダブルバッファリング ►今回やった処理の方式のこと 1.2 バックバッファ 6 用語を勉強する意義 用語なんかより考え方の方が断然重要? ►確かに考え方も重要だけど・・・ 用語を知らないと意思疎通できない ►誰かに質問するにも上手く説明できない ►説明する側も説明しにくい ►対等に相談するのも難しい ということで知らないと損するのです ►用語が伴ってこその考え方ということだね ►なんとなく覚えておこう 1.2 バックバッファ 7 補足事項 プログラミング用語集(随時更新) ►Wikiを見てね http://nanzanmmc.net/pc/lecture/game/add 1.2 バックバッファ 8
© Copyright 2024 ExpyDoc