与 eglCreatePbufferSurface 和 eglCreatePixmapSurface with Open

Difference from eglCreatePbufferSurface and eglCreatePixmapSurface with OpenGL ES(EGL)

本文关键字:with Open eglCreatePixmapSurface eglCreatePbufferSurface      更新时间:2023-10-16

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

首先,使用 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。