前回、ウィンドウを描画した所で、
終了したので今回はその続きから。
まず、先に前回のコンパイルオプションの指定で、
間違いがありましたので訂正。
まずは、前回と今回のコマンドを載せます。
GLUT API リファレンス(日本語)
http://www.asahi-net.or.jp/~yw3t-trns/opengl/glut/glut.htm#init
OpenGL 4 Reference
http://www.opengl.org/sdk/docs/man4/xhtml/
コンパイル
(前回)
gcc sample01.cpp -o sample01.out -Wall -framework GLUT -framework OpenGL
(今回)
gcc sample02.cpp -o sample02.out -Wall -framework GLUT -framework OpenGL -lstdc++
-lstdc++ を追加しています。
詳細はこの辺を参考にしてください。
gccの使い方メモ#03 gccとg++(其の弐)
さて、今回のサンプルプログラムはこちら。
[sample02.cpp]
#include <OpenGL/gl.h>
#include <GLUT/glut.h>
/**
* 描画
**/
void draw( void )
{
// 背景色指定(R:Red,G:Green:B:Blue,A:Alpha)
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
// バッファをクリア
glClear( GL_COLOR_BUFFER_BIT );
// 強制描画
glFlush();
}
/**
* 更新
**/
void update(void)
{
}
/**
* メイン関数
**/
int main( int argc, char* argv[] )
{
// 初期化
glutInit( &argc, argv );
// ウィンドウサイズの設定(640x480)
glutInitWindowSize( 640, 480 );
// ウィンドウの作成
glutCreateWindow( "ウィンドウの初期化" );
// 描画
glutDisplayFunc( draw );
// ループ処理
glutMainLoop();
return 0;
}
※新たに使用している関数について説明
オプション | 説明 | 引数 |
---|---|---|
GLUTAPI void APIENTRY glutInitWindowSize(int width, int height); | ウィンドウサイズの指定 | width:幅、height:高さ |
GLUTAPI int GLUTAPIENTRY glutCreateWindow(const char *title); | ウィンドウの作成 | title:ウィンドウタイトルバーに表示する文字列 |
void glClearColor( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); | 画面クリア時の色指定 | red:赤、green:緑、blue:青、 alpha:透明度 |
void glClear( GLbitfield mask ); | クリアのバッファを指定 | mask:マスクの設定 |
void glFlush( void ); | 強制実行 | - |
// ウィンドウサイズの設定(640x480)
glutInitWindowSize( 640, 480 );
ウィンドウのサイズを 幅:640、 高さ:480 に設定。
640 x 480 なのは、画面解像度を調べてください。
// ウィンドウの作成
glutCreateWindow( "ウィンドウの初期化" );
「ウィンドウの初期化」というのをタイトルバーに設定。
// 背景色指定(R:Red,G:Green:B:Blue,A:Alpha)
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
RGBAカラーとは、PCで色を表現する際に用いられる表記法の一つ。
それぞれ 0.0 〜 1.0 の間で指定。
RGBの値が大きいほど明るくなり、値が小さいほど暗くなります。
Aの値は アルファ値 と呼び、アルファ値を保存するデータ領域は アルファチャンネル と呼びます。
今回の場合は、全て 0 を指定しているので、 黒 となります。
※RGB全てを 1 に指定すると、 白 となります。
// バッファをクリア
glClear( GL_COLOR_BUFFER_BIT );
[マスク値の説明]
GL_COLOR_BUFFER_BIT:カラーバッファ
GL_DEPTH_BUFFER_BIT:深度バッファ
GL_STENCIL_BUFFER_BIT:ステンシルバッファ
※ちなみにマスク値を複数設定する場合には、パイプ(|)で接続します。
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
// 強制描画
glFlush();