現在地 >> メニュー >> 基本編26
INDEX:基本編25 << 基本編26 >> 基本編27

glReadPixels


glReadPixelsを使うと、フレームバッファ(カラーバッファ、デプスバッファなど)の内容を取得できる。
void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )
■第1引数、第2引数(x,y)
 ウィンドウ座標の読みとり開始位置。左下が原点。

■第3引数、第4引数(width,height)
 読み取る範囲の横幅と縦幅。(終了位置ではないので注意)

■第5引数(format)
 ピクセルデータのフォーマットを指定する。以下が指定可能。
  • GL_COLOR_INDEX
  • GL_STENCIL_INDEX
  • GL_DEPTH_COMPONENT
  • GL_RED
  • GL_GREEN
  • GL_BLUE
  • GL_ALPHA
  • GL_RGB
  • GL_RGBA
  • GL_LUMINANCE
  • GL_LUMINANCE_ALPHA

■第6引数 (type)
 データの型を指定。以下が指定可能。
  • GL_UNSIGNED_BYTE
  • GL_BYTE
  • GL_BITMAP
  • GL_UNSIGNED_SHORT
  • GL_SHORT
  • GL_UNSIGNED_INT
  • GL_INT
  • GL_FLOAT

■第7引数(pixels)
 データ格納場所。あらかじめ必要な分のメモリ確保や配列を用意しておく。

【例】
int WidthX = 50;
int HeightY = 60;
int Channels = 4;

float *data = new float[WidthX * HeightY * Channels];
glReadPixels(20,30,WidthX,HeightY,GL_RGBA,GL_FLOAT,data);
▲この場合、左下原点でスタート座標(20,30)、そこから横に50ピクセル、上に60ピクセル分。
RGBAの4色でfloat型で「data」に格納する。

【注意点】
glutInitDisplayModeに設定をしていないと正しい値は、格納されない。
例えば、
 glutInitDisplayMode(... GLUT_ALPHA...)
と設定がないとα値は格納されない。

※ヘッダファイルを見るとわかるが、「GL_RGBA」は「GL_RGB」と同じである。

サンプルコード

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます