diff --git a/src/api/include/projectM-4/render_opengl.h b/src/api/include/projectM-4/render_opengl.h index 0a061f765..6b524cfeb 100644 --- a/src/api/include/projectM-4/render_opengl.h +++ b/src/api/include/projectM-4/render_opengl.h @@ -34,13 +34,18 @@ extern "C" { /** * @brief Renders a single frame. * - * @note Separate two-pass frame rendering is currently not supported by the C API as it is rarely used - * and also depends on the loaded preset. - * * @param instance The projectM instance handle. */ PROJECTM_EXPORT void projectm_opengl_render_frame(projectm_handle instance); +/** + * @brief Renders a single frame into a user-defined framebuffer object. + * + * @param instance The projectM instance handle. + * @param framebuffer_object_id The OpenGL FBO ID to render to. + */ +PROJECTM_EXPORT void projectm_opengl_render_frame_fbo(projectm_handle instance, uint32_t framebuffer_object_id); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/libprojectM/ProjectMCWrapper.cpp b/src/libprojectM/ProjectMCWrapper.cpp index cbf5f6edc..f81aefd23 100644 --- a/src/libprojectM/ProjectMCWrapper.cpp +++ b/src/libprojectM/ProjectMCWrapper.cpp @@ -6,6 +6,8 @@ #include #include +#include + namespace libprojectM { @@ -171,6 +173,12 @@ void projectm_opengl_render_frame(projectm_handle instance) projectMInstance->RenderFrame(); } +void projectm_opengl_render_frame_fbo(projectm_handle instance, uint32_t framebuffer_object_id) +{ + auto projectMInstance = handle_to_instance(instance); + projectMInstance->RenderFrame(framebuffer_object_id); +} + void projectm_set_beat_sensitivity(projectm_handle instance, float sensitivity) { auto projectMInstance = handle_to_instance(instance);