通常行われているように、OpenGL テクスチャ 2D からピクセルをバイト配列 (unsigned char) に読み取ります。逆のプロセス。私の質問は - するだけで十分ですか:
glGetTexImage(GL_TEXTURE_2D,0,GL_RGBA,GL_UNSIGNED_INT,bytes);
それ以外の :
glGetTexImage(GL_TEXTURE_2D,0,GL_RGBA,GL_UNSIGNED_BYTE,bytes);
次に、各整数を繰り返し処理し、0-1 の範囲から 0-255 に変換しますか? サードパーティの画像ライブラリを使用せずにこのような変換を行う例は実際には見つかりませんでした。
私がこれを行う場合:
size_t lenght=_viewWidth * _viewHeight ;
GLubyte *bytes=(GLubyte*)malloc(lenght);
/////////////// read pixels from tex /////////////////////
glBindTexture(GL_TEXTURE_2D,tex);
glGetTexImage(GL_TEXTURE_2D,0,GL_BGR,GL_UNSIGNED_BYTE,bytes);
uint8_t Rc, Gc, Bc;
for(x = 0; x < lenght; x+=3)
{
Bc = *bytes + x;
Gc = *bytes + x + 1;
Rc = *bytes + x + 2;
}
Rc、Gc、Bc は 0 ~ 255 の範囲になりますか?