LoginSignup
1
0

More than 5 years have passed since last update.

macでGLUTを触ってみた vol.2

Posted at

前回、ウィンドウを描画した所で、
終了したので今回はその続きから。

まず、先に前回のコンパイルオプションの指定で、
間違いがありましたので訂正。
まずは、前回と今回のコマンドを載せます。

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();
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0