diff options
Diffstat (limited to 'emulator/opengl/host/include/libOpenglRender/render_api.h')
-rw-r--r-- | emulator/opengl/host/include/libOpenglRender/render_api.h | 69 |
1 files changed, 35 insertions, 34 deletions
diff --git a/emulator/opengl/host/include/libOpenglRender/render_api.h b/emulator/opengl/host/include/libOpenglRender/render_api.h index ebb02eb..4fe54f4 100644 --- a/emulator/opengl/host/include/libOpenglRender/render_api.h +++ b/emulator/opengl/host/include/libOpenglRender/render_api.h @@ -41,38 +41,6 @@ extern "C" { ret name args #endif -/* If a function with this signature is passed to initOpenGLRenderer(), - * it will be called by the renderer just before each new frame is displayed, - * providing a copy of the framebuffer contents. - * - * The callback will be called from one of the renderer's threads, so will - * probably need synchronization on any data structures it modifies. The - * pixels buffer may be overwritten as soon as the callback returns; if it needs - * the pixels afterwards it must copy them. - * - * The pixels buffer is intentionally not const: the callback may modify the - * data without copying to another buffer if it wants, e.g. in-place RGBA to RGB - * conversion, or in-place y-inversion. - * - * Parameters are: - * context The pointer optionally provided when the callback was - * registered. The client can use this to pass whatever - * information it wants to the callback. - * width, height Dimensions of the image, in pixels. Rows are tightly packed; - * there is no inter-row padding. - * ydir Indicates row order: 1 means top-to-bottom order, -1 means - * bottom-to-top order. - * format, type Format and type GL enums, as used in glTexImage2D() or - * glReadPixels(), describing the pixel format. - * pixels The framebuffer image. - * - * In the first implementation, ydir is always -1 (bottom to top), format and - * type are always GL_RGBA and GL_UNSIGNED_BYTE, and the width and height will - * always be the same as the ones passed to initOpenGLRenderer(). - */ -typedef void (*OnPostFn)(void* context, int width, int height, int ydir, - int format, int type, unsigned char* pixels); - /* initLibrary - initialize the library and tries to load the corresponding * GLES translator libraries. This function must be called before anything * else to ensure that everything works. If it returns an error, then @@ -98,8 +66,7 @@ DECL(int, setStreamMode, (int mode)); * This function is *NOT* thread safe and should be called first * to initialize the renderer after initLibrary(). */ -DECL(int, initOpenGLRenderer, (int width, int height, int portNum, - OnPostFn onPost, void* onPostContext)); +DECL(int, initOpenGLRenderer, (int width, int height, int portNum)); /* getHardwareStrings - describe the GPU hardware and driver. * The underlying GL's vendor/renderer/version strings are returned to the @@ -108,6 +75,40 @@ DECL(int, initOpenGLRenderer, (int width, int height, int portNum, DECL(void, getHardwareStrings, (const char** vendor, const char** renderer, const char** version)); +/* A per-frame callback can be registered with setPostCallback(); to remove it + * pass NULL for both parameters. While a callback is registered, the renderer + * will call it just before each new frame is displayed, providing a copy of + * the framebuffer contents. + * + * The callback will be called from one of the renderer's threads, so will + * probably need synchronization on any data structures it modifies. The + * pixels buffer may be overwritten as soon as the callback returns; if it + * needs the pixels afterwards it must copy them. + * + * The pixels buffer is intentionally not const: the callback may modify the + * data without copying to another buffer if it wants, e.g. in-place RGBA to + * RGB conversion, or in-place y-inversion. + * + * Parameters are: + * context The pointer optionally provided when the callback was + * registered. The client can use this to pass whatever + * information it wants to the callback. + * width, height Dimensions of the image, in pixels. Rows are tightly + * packed; there is no inter-row padding. + * ydir Indicates row order: 1 means top-to-bottom order, -1 means + * bottom-to-top order. + * format, type Format and type GL enums, as used in glTexImage2D() or + * glReadPixels(), describing the pixel format. + * pixels The framebuffer image. + * + * In the first implementation, ydir is always -1 (bottom to top), format and + * type are always GL_RGBA and GL_UNSIGNED_BYTE, and the width and height will + * always be the same as the ones passed to initOpenGLRenderer(). + */ +typedef void (*OnPostFn)(void* context, int width, int height, int ydir, + int format, int type, unsigned char* pixels); +DECL(void, setPostCallback, (OnPostFn onPost, void* onPostContext)); + /* createOpenGLSubwindow - * Create a native subwindow which is a child of 'window' * to be used for framebuffer display. |