C++メモ XCodeを使ってOpenGLでウィンドウの背景色をつけてみる
前回の続き(コーディングできるまでの手順の記事はここ)。
次のフレームワークを追加する。
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が呼ばれる
- 描画処理する
※要するに再描画する
ま、自分へのメモってことで。
[amazonjs asin="4862461891″ locale="JP" title="OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング-“]
ディスカッション
コメント一覧
まだ、コメントがありません