4

我遇到了一个问题,我需要通过软件渲染使用 opengl es2 进行一些屏幕外工作(只有 CPU,没有 GPU)。问题是我可以在没有 GPU 的情况下使用 pbuffer 吗?另外,如何在绘制后直接保存为 png 文件。请帮助并给我一个演示。

4

1 回答 1

1

首先,使用 EGL 创建一个离屏缓冲区:

eglCreatePbufferSurface(display, config, PBufAttribs); 

然后读取缓冲区:

   GLint size;
   size = esContext->width * esContext->height * 4;
   GLubyte *data = (GLubyte*)malloc(size);
   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
   glReadPixels(0,0,esContext->width,esContext->height,GL_RGB,GL_UNSIGNED_BYTE,data);

最后保存到像素缓冲区到 bmp 文件。(提醒:在24位bmp图像中,顺序是BGR,而不是RGB;所以需要将图像数据从BGR切换到RGB。)

于 2012-10-30T07:11:06.563 回答