Skip to content

Commit bd2b1ba

Browse files
committed
Add API function to enable rendering to custom FBO IDs
1 parent b0cdf4d commit bd2b1ba

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

src/api/include/projectM-4/render_opengl.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,18 @@ extern "C" {
3434
/**
3535
* @brief Renders a single frame.
3636
*
37-
* @note Separate two-pass frame rendering is currently not supported by the C API as it is rarely used
38-
* and also depends on the loaded preset.
39-
*
4037
* @param instance The projectM instance handle.
4138
*/
4239
PROJECTM_EXPORT void projectm_opengl_render_frame(projectm_handle instance);
4340

41+
/**
42+
* @brief Renders a single frame into a user-defined framebuffer object.
43+
*
44+
* @param instance The projectM instance handle.
45+
* @param framebuffer_object_id The OpenGL FBO ID to render to.
46+
*/
47+
PROJECTM_EXPORT void projectm_opengl_render_frame_fbo(projectm_handle instance, uint32_t framebuffer_object_id);
48+
4449
#ifdef __cplusplus
4550
} // extern "C"
4651
#endif

src/libprojectM/ProjectMCWrapper.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
#include <cstring>
88
#include <sstream>
9+
#include <projectM-4/render_opengl.h>
10+
911

1012
namespace libprojectM {
1113

@@ -171,6 +173,12 @@ void projectm_opengl_render_frame(projectm_handle instance)
171173
projectMInstance->RenderFrame();
172174
}
173175

176+
void projectm_opengl_render_frame_fbo(projectm_handle instance, uint32_t framebuffer_object_id)
177+
{
178+
auto projectMInstance = handle_to_instance(instance);
179+
projectMInstance->RenderFrame(framebuffer_object_id);
180+
}
181+
174182
void projectm_set_beat_sensitivity(projectm_handle instance, float sensitivity)
175183
{
176184
auto projectMInstance = handle_to_instance(instance);

0 commit comments

Comments
 (0)