文档章节

OpenGL glReadPixels错误

TinkerS
 TinkerS
发布于 2013/04/11 11:01
字数 273
阅读 1811
收藏 0

最近在使用glReadPixels时得到的图像总是黑色的,

unsigned char *pixels = (unsigned char *) malloc (_width * _height * 3);

glReadPixels(0, 0, _width, _height, GL_RGB, GL_UNSIGNED_BYTE, pixels);

非常不解,查了很多资料,最后在官网上看到 使用glReadPixels时,传入的format和type是有要求的 ,于是乎改成下面的代码:

unsigned char *pixels = (unsigned char *) malloc (_width * _height * 4);

glReadPixels(0, 0, _width, _height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

果然就行了

另外,注意glReadPixels读出来的像素值是上下镜像翻转过的,所以要得到正确的图像,需要对数据进行一次垂直镜像翻转


format和type的规则参见官方文档,http://www.khronos.org/opengles/sdk/1.1/docs/man/

附上官网API详解:

Errors

GL_INVALID_ENUM is generated if format is not GL_RGBA or the value of GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES.

GL_INVALID_ENUM is generated if type is not GL_UNSIGNED_BYTE or the value of GL_IMPLEMENTATION_COLOR_READ_TYPE_OES.

GL_INVALID_VALUE is generated if either width or height is negative.

GL_INVALID_OPERATION is generated if type is GL_UNSIGNED_SHORT_5_6_5 and format is not GL_RGB.

GL_INVALID_OPERATION is generated if type is GL_UNSIGNED_SHORT_4_4_4_4 or GL_UNSIGNED_SHORT_5_5_5_1 and format is not GL_RGBA.

GL_INVALID_OPERATION is generated if format and type are neither GL_RGBA and GL_UNSIGNED_BYTE, respectively, nor the format/type pair returned by querying GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES and GL_IMPLEMENTATION_COLOR_READ_TYPE_OES.

© 著作权归作者所有

共有 人打赏支持
TinkerS
粉丝 8
博文 55
码字总数 12670
作品 0
高级程序员
私信 提问
加载中

评论(1)

j
jobsxiao
“glReadPixels读出来的像素值是上下镜像翻转过的”。。。是你自己用错了吧
glReadPixels 使用

@petter 你好,想跟你请教个问题:请问是否试过Android下用OpenGL的glReadPixels,将frame save成图片并保存? 打扰了- -

zeuswjm
2012/05/30
280
0
OpenGL超级宝典笔记——显示列表

前言 在先前的章节中,我们已经讨论OpenGL基本的一些渲染技术。这些基本的技巧足够渲染简单的图像,然而在渲染精细的画面逼真的画面的时候(非常多的顶点和纹理),如果使用之前的方式渲染(...

Mario_Q
2013/12/15
0
2
纹理与表面细节添加方法---OpenGL纹理函数

OpenGL线纹理函数 OpenGL表面纹理函数 OpenGL体纹理函数 OpenGL纹理图案的颜色选项 OpenGL纹理映射选项 OpenGL纹理环绕 复制帧缓存中的OpenGL纹理图案 OpenGL纹理坐标数组 OpenGL纹理图案命名...

中国龙-扬科
2018/11/15
0
0
Android图形---OpenGL(二)

本文译自:http://developer.android.com/guide/topics/graphics/opengl.html OpenGL 包 一旦使用GLSurfaceView和GLSurfaceView.Renderer类给OpenGL建立了一个View容器,那么就可以开始使用以...

长平狐
2012/10/16
81
0
OpenGL中位图的操作(glReadPixels,glDrawPixels和glCopyPi...

1、 BMP文件格式简单介绍 BMP文件是一种像素文件,它保存了一幅图象中所有的像素。这种文件格式可以保存单色位图、16色或256色索引模式像素图、24位真彩色图象,每种模式种单一像素的大小分别...

代码学习者01
2013/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[Flowable]6.4.1五个war包部署

直接放tomcat http://localhost:8080/flowable-task http://localhost:8080/flowable-modeler http://localhost:8080/flowable-idm http://localhost:8080/flowable-admin http://localhost:......

Danni3
23分钟前
0
0
扩展spring cache 支持缓存多租户及其自动过期

spring cache 的概念 Spring 支持基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代...

冷冷gg
27分钟前
0
0
Kafka连接器深度解读之转换器和序列化释疑

Kafka连接器是Apache Kafka®的一部分,提供数据存储与Kafka之间的流式集成。对于数据工程师来说,只需要使用JSON格式配置文件即可。目前已经有很多数据存储的连接器,仅举几例来说,包括JDB...

李玉珏
33分钟前
0
0
二进制取反

取反,是Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。 概念 编辑 补码的规定如下: 对正数来说,最高位为0,其余各位代表数值本身(以二进制表示)...

天王盖地虎626
今天
6
0
OSChina 周一乱弹 —— 可乐进化史

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 分享Radiohead的单曲《Creep》 《Creep》- Radiohead 手机党少年们想听歌,请使劲儿戳(这里) @EdmondFrank :刚...

小小编辑
今天
1K
17

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部