Отличия от eglCreatePbufferSurface и eglCreatePixmapSurface с OpenGL ES (EGL)

У меня возникла проблема, когда мне нужно работать за пределами экрана с opengl es2 программным рендерингом (только с процессором, без графического процессора). Вопрос в том, могу ли я использовать pbuffer без GPU? Кроме того, как напрямую сохранить в png файл после рисования чего-либо. Пожалуйста, помогите и дайте мне демо.

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.)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector