gpt4 book ai didi

c++ - 使用 OpenGL ES(EGL) 与 eglCreatePbufferSurface 和 eglCreatePixmapSurface 的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:32 24 4
gpt4 key购买 nike

我遇到一个问题,我需要通过软件渲染(只有 CPU,没有 GPU)使用 opengl es2 进行一些屏幕外工作。问题是我可以在没有 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。)

关于c++ - 使用 OpenGL ES(EGL) 与 eglCreatePbufferSurface 和 eglCreatePixmapSurface 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com