glReadPixels 与 glPixelStore 的使用
Posted
技术标签:
【中文标题】glReadPixels 与 glPixelStore 的使用【英文标题】:glReadPixels usage with glPixelStore 【发布时间】:2013-01-13 09:45:30 【问题描述】:我查看了多个关于 glReadPixels 的教程,但我很困惑:
void glReadPixels(GLint x, GLint y, GLsizei 宽度, GLsizei 高度, GLenum 格式, GLenum 类型, GLvoid * 数据)
最后一个参数是无效的? 我看到了教程,他们将参数声明为向量,无符号字符,GLubyte,... 但它的真正含义是什么? 你需要调用 glPixelStoref( , ) 吗?
【问题讨论】:
【参考方案1】:void*
是 C/C++ 中的“指向内存块的指针”。 glReadPixels
的目的是获取帧缓冲区的一部分并将像素数据写入内存。 data
参数是它写入的“你的记忆”。
确切地写什么以及在多大程度上取决于pixel transfer parameters、format
和type
。这就是为什么需要void*
;因为它可能正在写入一个字节数组、一个整数数组、一个浮点数组等。这完全取决于这两个参数的含义。
【讨论】:
我要补充的一件事(可能会有所帮助)是,您不能在抗锯齿缓冲区上使用 glReadPixels。这意味着您可能需要创建自己的屏幕外缓冲区,其中包含您的场景副本但 AA 已禁用。以上是关于glReadPixels 与 glPixelStore 的使用的主要内容,如果未能解决你的问题,请参考以下文章