iOS上的OPENGL ES,glreadpixel不适用于BGRA格式

时间:2011-08-05 03:30:08

标签: ios opengl-es glreadpixels

在iOS设备上(我试过ipad1和ipad2)glreadpixel适用于RGBA像素格式,但对于BGRA像素格式,它不起作用。在下面的代码中,我使用GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES来获取本机像素格式,即GL_BGRA_EXT,但glgeterror返回GL_INVALID_ENUM。这与opengl doc http://www.khronos.org/opengles/sdk/1.1/docs/man/glReadPixels.xml中的语句相矛盾,该语句表示如果格式不是GL_RGBA或GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES的值,则生成GL_INVALID_ENUM。

有没有人对此有任何看法?

GLint native_format;
GLint native_type;

glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES, &native_format);
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES, &native_type);

NSLog(@"native_format: 0x%04X", native_format);
NSLog(@"native_type: 0x%04X", native_type);

//screen size
CGSize s = [[CCDirector sharedDirector] winSize];
int tx = s.width;
int ty = s.height;

int bitsPerPixel=32;                

int bytesPerRow = (bitsPerPixel/8) * tx;
NSInteger myDataLength = bytesPerRow * ty;

GLubyte *buffer = malloc(sizeof(GLubyte)*myDataLength);

[target begin];
glReadPixels(0,0,tx,ty,native_format,native_type, buffer);
NSLog(@"gl get error %d", glGetError());
[target end];

0 个答案:

没有答案