前回の続き(コーディングできるまでの手順の記事はここ)。
次のフレームワークを追加する。
glClearColorってメソッドでウィンドウの背景色を指定する。
glClearColorの入力になる引数のポイントはこんな感じ。
- 引数の型はfloat
- 引数は赤色、緑色、青色、透明度って順番
- 赤色、緑色、青色、透明度の値は0〜1で指定
※色をRGBで考えるときは255で割って0〜1になるようにする
glClearColorを呼び出しただけだと実行しても起きない。
次のメソッドをglutDisplayFuncの引数で指定したメソッド(あとに書くコードのdisplayってメソッド)に、
- glClearっていうバッファをクリアしてくれるメソッドを呼び出す
※引数はバッファをクリアするのは背景だよ意味のGL_COLOR_BUFFER_BITって定数を指定する - glFlushっていう描画処理を実行してくれるメソッドを呼び出す
で、コードはこんな感じ。
//
// main.cpp
// ProtoOpenGL
//
// Created by tetsuya yoshida on 2012/12/05.
//
//
#include <iostream>
#include <GLKit/GLKit.h>
#include <GLUT/GLUT.h>
// コールバック関数
void display(void)
{
// 背景を塗りつぶす(バッファをクリアする)
glClear(GL_COLOR_BUFFER_BIT);
// 描画処理を実行する
glFlush();
return;
}
// メイン関数
int main(int argc, const char * argv[])
{
// ウィンドウのタイトル名となる文字列を決める
char title[80] = "sample";
// GLUTライブラリを初期化する
glutInit(&argc, (char**)argv);
// ウィンドウを生成する(引数の文字列をウィンドウ名に設定する)
glutCreateWindow(title);
// カレントウィンドウに対するコールバック関数を設定する
glutDisplayFunc(display);
// 背景色を決める
float red = 255.0f/255.0f; // 赤色
float green = 155.0f/255.0f; // 緑色
float blue = 0.0f/255.0f; // 青色
float alpha = 0.0f/100.0f; // 透明度
// ウィンドウの背景色を設定する
glClearColor(red, green, blue, alpha);
// メインループを開始する
glutMainLoop();
return 0;
}
実行した結果はこんな感じ。
ちなみに、今回のコードだとウィンドウのサイズをいくら変更しても、ウィンドウの背景色は決めた色になる。
その訳は、こんな処理が行われるから。
- ウィンドウのサイズを変更した場合、glutDisplayFuncメソッドで指定した設定したコールバック処理をするメソッド(コードではdisplayメソッド)が呼ばれる
- displayメソッドで、glClearとglFlushが呼ばれる
- 描画処理する
※要するに再描画する
ま、自分へのメモってことで。

