将glTexSubImage2D与像素缓冲区对象

时间:2015-05-14 20:22:34

标签: opengl textures texture2d

我正在尝试将图像的子集上传到纹理。所以,我这样做:

glBindTexture(GL_TEXTURE_2D, textureId);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer);

glPixelStorei(GL_UNPACK_ROW_LENGTH, width);
glPixelStorei(GL_UNPACK_SKIP_PIXELS, x_offset);
glPixelStorei(GL_UNPACK_SKIP_ROWS, y_offset);

glTexSubImage2D(GL_TEXTURE_2D, 0, x_offset, y_offset, width, height,
                GL_BGRA, GL_UNSIGNED_BYTE, NULL);

glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);

当x和y偏移设置为0并且宽度和高度设置为纹理宽度和高度时,此代码可以正常工作。但是,每当我尝试一个子集时,我都可以完全垃圾化看起来像噪音的图像。

我可以理解我的纹理的一部分是有噪声的,因为它不会用适当的值初始化(由于代码只读取一个子集)但我希望表示该子集的块具有正确的值。

0 个答案:

没有答案