PBOってもしかしていまいち?
うーん、こうではなくて。
glGenBuffers(1, &pboID); glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, pboID); glBufferData(GL_PIXEL_UNPACK_BUFFER_ARB, width_ * bpp, NULL, GL_STREAM_DRAW); for (int y = 0; y < height_; ++y) { buffer = (unsigned char*)glMapBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY); png_read_row(png_, buffer, NULL); glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER_ARB); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, y, width_, 1, upload, type, 0); } glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0); glDeleteBuffers(1, &pboID);
こうしたいんですけど。
glGenBuffers(1, &pboID); glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, pboID); glBufferData(GL_PIXEL_UNPACK_BUFFER_ARB, width_ * bpp, NULL, GL_STREAM_DRAW); buffer = (unsigned char*)glMapBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY); for (int y = 0; y < height_; ++y) { png_read_row(png_, buffer, NULL); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, y, width_, 1, upload, type, 0); } glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER_ARB); glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0); glDeleteBuffers(1, &pboID);
書けても良さそうなものなんだけどな・・・。そんなに甘くないですか。
PBO使うことでかえって遅くなりそう・・・。