最終更新: mikk_ni3_92 2009年10月12日(月) 14:26:53履歴
現在地 >> メニュー >> 基本編26
INDEX:基本編25 << 基本編26 >> 基本編27
glReadPixelsを使うと、フレームバッファ(カラーバッファ、デプスバッファなど)の内容を取得できる。
ウィンドウ座標の読みとり開始位置。左下が原点。
■第3引数、第4引数(width,height)
読み取る範囲の横幅と縦幅。(終了位置ではないので注意)
■第5引数(format)
ピクセルデータのフォーマットを指定する。以下が指定可能。
■第6引数 (type)
データの型を指定。以下が指定可能。
■第7引数(pixels)
データ格納場所。あらかじめ必要な分のメモリ確保や配列を用意しておく。
【例】
RGBAの4色でfloat型で「data」に格納する。
【注意点】
glutInitDisplayModeに設定をしていないと正しい値は、格納されない。
例えば、
glutInitDisplayMode(... GLUT_ALPHA...)
と設定がないとα値は格納されない。
※ヘッダファイルを見るとわかるが、「GL_RGBA」は「GL_RGB」と同じである。
INDEX:基本編25 << 基本編26 >> 基本編27
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」と同じである。
- 基本編26::まとめコード1(RGBを取得)
- 基本編26::まとめコード2(デプス値を取得)
- 基本編26::まとめコード3(α値を取得)