第5回 グラフィックス2(OpenGL・glut,多角形の描画と塗りつぶし)
本日の内容
- 演習
- 演習5.1:点の描画
- 演習5.2:座標指定を使った三角形描画
- 演習5.3:配列を使った三角形描画
- 演習5.4:多角形の描画
- 演習5.5:並べられた三角形の描画
演習5.1:点の描画
- 新しいプロジェクトを作成する。
- .cのソースコードを作成(追加→新しい項目)し、とりあえず、以下のコードを入力する。
【ソースコード】

- ヘッダファイルやライブラリが無いといったエラーが出るかもしれない。
- 第3回を踏まえて、(glut.dll, glut32.dll)と(glut.h, glut32.lib, glut.lib)を適切な場所へコピーする。
- ビルドが成功したら、実行し赤い点が描画されることを確認する。
演習5.2:座標指定を使った三角形描画
【ソースコード】
- display関数の中に座標指定して三角形を描画するコードを追加する


演習5.3:配列を使った三角形描画
- 配列を使って、三角形を描画する。
- Step1, Step 2のコードは、コメントアウトしておく。
【ソースコード】

- 5.3.1
- 点での描画
- 3つの点が描画されることを確認する。
- glDrawArrays()の第1引数をGL_POINTS から GL_LINE_LOOP に変更する。
- 5.3.2
- 線での描画
- 三角形が線で描かれたことを確認する。
- さらに、glDrawArrays()の第1引数をGL_LINE_LOOP から GL_TRIANGLES に変更する。
- 5.3.3
- 面での描画
- 三角形の面が塗りつぶされたことを確認する。

演習5.4:多角形の描画
- Step3のコードは、コメントアウトしておく。
- 配列の点の個数を6個にする。(配列変数vtx2)
【ソースコード】

- glDrawArrays()の第1引数を以下のように変更してみて、どのようになるか確かめてみる。
- GL_POINTS // 与えられた座標に点を描画
- GL_LINES // 与えられた2点を結ぶ線を描画
- GL_LINE_STRIP // 与えられた座標を結ぶ折れ線を描画
- GL_LINE_LOOP // 与えられた座標を結ぶ折れ線を描画し、最初の点と最後の点も結ぶ
- GL_TRIANGLES // 与えられた3点から三角形を描画
- GL_TRIANGLE_STRIP // 与えられた座標から一辺を共有しながら帯状に三角形を描画

演習5.5:並べられた三角形の描画
- 配列の点の個数を5個にする。(配列変数vtx3)
- Step4のコードをコピーして、その下方に貼り付けてStep5とする。
- Step4のコードは、コメントアウトしておく。
- Step5の一部を下記のように変更する。(GL_TRIANGLE_FAN)
【ソースコード】

- GL_TRIANGLE_FAN // 最初に与えられた点を開始点にしながら帯状に三角形を描画
- 実行結果

- (数字や点、また多角形内部の線は実際には表示されない)
- ここで GL_TRIANGLE_FANは、1を起点とし1からそれ以外の点に線を結んで三角形を描く。
課題5.1
- 演習5.5でのGL_TRIANGLE_FANを利用し三角形を並べることで、下図に示すような1/4の大きさの円を描いてみよう。

- 原点を起点とし、10度ずつずらしていくものとする。
- 点の数は、原点も含めて11点となる。
- 配列をつぎのように宣言する。(22 = 11×2)


ヒント1

ヒント2

レポート
- 提出先・期限
- https://www.kagoshima-u.ac.jp/manaba/の「プログラミング言語I及び演習」のレポートより提出
- 演習当日の23:55まで
- 内容
- Microsoft Wordを用いてレポートを作成すること.
下記について記述すること.
- 演習5.1~演習5.5 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果)
- 課題5.1 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果)
- 結論 (今回の演習を通じて学んだことについて''客観的かつ具体的に''述べる.)
- 質問・相談 (質問した場合や誰かと相談した場合は,その内容、相手名、所要時間を書くこと.)
- 所感 (感想や意見などを自由に書いてよい.)
- 提出ファイル
- Wordファイルにソースコードやキャプチャした実行画面などを貼り付けてmanabaのレポートから提出すること.
- (*.cファイルを送る必要はありません。)
- テンプレート等(Word)
- Word表紙 (回数やタイトルなどを適宜修正して使うこと.)