我正在开发一个绘制图形或纹理的应用程序,在NSOpenGLView中。现在我已完成绘图工作,它工作正常。但是我将pix数据导出到NSImage有问题。我确实用glreadbuffer设置了readbuffermode (),并尝试了所有参数(GL_FRONT_LEFT
,GL_FRONT_RIGHT
,GL_BACK_LEFT
,GL_BACK_RIGHT
,GL_FRONT
,GL_BACK
,GL_LEFT
,GL_RIGHT
,GL_FRONT_AND_BACK
,GL_AUX0
,GL_AUX1
,GL_AUX2
,GL_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);
当我使用双缓冲区时,我没有得到像素数据。