- 頂点データのピクセル版。
- Pixel Buffer Objects (PBO) の使い方は以下のように行います
glGenBuffers(1, &name);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, name);
glBufferData(GL_PIXEL_UNPACK_BUFFER, width * height, pDat, GL_STATIC_DRAW);
GLubyte *c = (GLubyte*)glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_READ_WRITE);
glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
glBufferSubData(GL_PIXEL_UNPACK_BUFFER, offset, size, pDat);
glDrawPixels(width, height, GL_RGB, GL_UNSIGNED_BYTE, 0);
glDeleteBuffers(1, &name);
- UNPACK は、アプリケーションからデータを参照するときに使用、例えば glDrawPixels, glTexImage2D など。一方、PACK は、アプリケーションにデータを戻すときに使用、例えば、glReadPixels, glGetTexImage など。
- GPU に頻繁に使用される、画像データを PBO にすることは高速化につながります
- PBO を使用することで、メモリとビデオメモリ間に画像データが行き来することを減らすことができます
- パイプラインで実行された結果から、画像データを読み出せます