繁体   English   中英

与带有OpenGL ES(EGL)的eglCreatePbufferSurface和eglCreatePixmapSurface的区别

[英]Difference from eglCreatePbufferSurface and eglCreatePixmapSurface with OpenGL ES(EGL)

我遇到一个问题,需要通过软件渲染在opengl es2上进行一些屏幕外工作(仅具有CPU,没有GPU)。 问题是我可以在没有GPU的情况下使用pbuffer吗? 另外,如何在绘制内容后直接保存到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。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM