-
Есть VMWare симулятор BlackBerry PlayBook и уже реальный девайс - планшет Panda. На обоих установлена UNIX-подобная ОС QNX, графическая библиотека - OpenEGL (так понимаю "расширенный" OpenGL). Задача сделать скриншот экрана нарисованного OpenGL'ем. Для этого использую функцию glReadPixels, на BlackBerry она замечательно работает, а вот на Панде - выдаёт "чёрную" картинку, то есть все байты буфера якобы равны нулю. Читал что перед чтением буфера его сначала нужно указать с помощью glReadBuffer, но в заголовочных файлах OpenEGL этой функции нет, видимо в спецификацию она не включена.
Может кто подсказать, есть ли ещё способы сделать скриншот кроме исп-ия glReadPixels? Наверняка это не единственный путь.
Спасибо заранее.
-
если кому пригодится...
1) Создать новую "пиксельную поверхность":
EGLSurface eglSurface= 0; EGLint attributes[] = { EGL_WIDTH, <ширина>, EGL_NONE, EGL_HEIGHT, <высота>, EGL_NONE }; eglSurface = eglCreatePbufferSurface(eglDisplay, eglConfig, attributes);
2) Затем сделать эту поверхность текущей: eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
3) После этого отрисовка будет идти не на экран, а в новую поверхность и glReadPixels может считать данные буфера. Вызывать eglSwapBuffers не нужно, т. о., можно рендерить сцену прямо в файл, без отображения её на экран вообще.
|