Я разрабатываю приложение для рисования графики или текстур в NSOpenGLView. Теперь я закончил работу для рисования, она работает нормально. Но у меня проблема с экспортом данных пикселей в NSImage. Я установил режим чтения с помощью glreadbuffer() , И попробовал все параметры (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
) , Я не получил данные пикселей.
Настройка пиксельного формата:
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);
Я не получил данные пикселей, когда использовал двойной буфер.