2012-12-10 41 views

回答

1

这不是什么大不了的,如果你有glGetTexImage*()

如果glGetTexImage *()不可用,则必须将纹理四边形渲染到连接到FBO(如果支持)的渲染缓冲区,或渲染到后台缓冲区并使用glReadPixels()从要么渲染目标。如果渲染目标的大小不足,则必须分别渲染和检索多个贴图。

在实施任一方法,注意到其他状态,它决定如何以及在何处的像素实际上将被写入到:

  • GL_PACK_ALIGNMENT(图像线对准; 1,2,4或8个字节)时需要为请求的图像大小分配适当的内存。例如,一个24位DIB(.bmp)使用4个字节的行对齐。每像素3个字节,最后需要填充,如果(image.width * 3) % 4 != 0。 附加填充字节总量为:

    readSize.y * ((alignment - readSize.x % alignment) % alignment)

  • GL_PIXEL_PACK_BUFFER,像素传输的目标缓冲区绑定(可能在您的情况下未使用并显式设置为0)。

+0

谢谢你的协助。它似乎支持函数glReadPixels,我会尝试它。 – Timothy

+0

不客气,快乐的编码! – Sam