sample-001 (先週の sample-005 と同じ物) 画面の表示を作るのに直接、描画するのではなく aBoard を変更し aBoard の内容に従って、描画する -> aBoard の内容を変更すると、描画内容も変る 描画の事を考えるより、aBoard の変更のほうが楽 sample-002 : sample-001 と同じ内容、sample-003 の準備 (*New*) 大域変数 大域変数とは 関数の外で宣言された変数 (特徴)複数の関数で、共有できる変数 display 関数と mouse 関数で、aBoard が共有できるように する (準備) aBoard を大域変数に変更する 具体的には、aBoard の宣言を関数の外に追い出した これで display だけでなく他の関数 ( sample-004 の mouse ) でも aBoard が利用できる sample-003 : マウスの入力を扱う マウスの座標を、ゲーム盤の位置情報に変換する sample-004 : マウスをつかって、コマのうつ場所を指定したい マウスカーソルの位置の情報を利用して、 (モデル上での)コマのうつ位置をしらべ、 その位置の(aBoardの)値を書き換える # と、表示も変る OpenGL ではマウスの入力は、Call Back で行う 先々週に学んだ これは display 関数と異なる *でも* 表示をかえるには display の中の aBoard を変更する必要がある。 aBoard が大域変数になっているで、利用できる sample-006 OpenGL でのアニメーションの原理 アニメーション : 時間に応じて変る絵を連続してかく 時間がくる -> モデルかわる -> 表示が変る last_size が変る -> コマの大きさが変る animetion 関数が、定期的に呼び出されれば 呼び出される度に、すこしずつ モデルを変更すればよい animetion 関数を定期的に呼び出すには glutIdleFunc で call back させればよい [後始末] アニメーションが終了したら glutIdleFunc(NULL) で、call back をしなくする glutIdleFunc();