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