在mac osx上的opengl

时间:2011-11-04 09:12:40

标签: cocoa opengl glreadpixels nsopenglview

我正在开发一个绘制图形或纹理的应用程序,在NSOpenGLView中。现在我已完成绘图工作,它工作正常。但是我将pix数据导出到NSImage有问题。我确实用glreadbuffer设置了readbuffermode (),并尝试了所有参数(GL_FRONT_LEFTGL_FRONT_RIGHTGL_BACK_LEFTGL_BACK_RIGHTGL_FRONTGL_BACKGL_LEFTGL_RIGHTGL_FRONT_AND_BACKGL_AUX0GL_AUX1GL_AUX2GL_AUX3),我没有得到像素数据。

pixformat设置:

NSOpenGLPixelFormatAttribute attribsNice[] = {
    NSOpenGLPFAAccelerated,
    NSOpenGLPFADoubleBuffer,
    NSOpenGLPFADepthSize, 24,
    NSOpenGLPFAAlphaSize, 8,
    NSOpenGLPFAColorSize, 24,
    NSOpenGLPFABackingStore,
    NSOpenGLPFANoRecovery,
    kCGLPFASampleBuffers, 1, kCGLPFASamples, 2,
    0};

读取像素数据:

glReadBuffer(GL_BACK);
glPixelStorei(GL_PACK_ALIGNMENT, 4);
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
glPixelStorei(GL_PACK_SKIP_ROWS, 0);
glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
glReadPixels(0,0,BufferSize.width,BufferSize.height,GL_RGBA,GL_UNSIGNED_BYTE,_databuffer);

glReadBuffer(GL_FRONT_RIGHT);
glPixelStorei(GL_PACK_ALIGNMENT, 4);
glReadPixels(0,0,width,height,GL_RGBA,GL_UNSIGNED_INT_8_8_8_8_REV,databuffer);

当我使用双缓冲区时,我没有得到像素数据。

0 个答案:

没有答案