/* Called by glfilter */
+/* this function really has to be simplified... do we really need to
+ set projection this way? Wouldn't be better a set_projection
+ separate call? or just make glut functions available out of
+ gst-libs and call it if needed on drawcallback? -- Filippo */
+/* GLCB too.. I think that only needed parameters should be
+ * GstGLDisplay *display and gpointer data, or just gpointer data */
+/* ..everything here has to be simplified! */
gboolean
gst_gl_display_use_fbo (GstGLDisplay* display, gint texture_fbo_width, gint texture_fbo_height,
GLuint fbo, GLuint depth_buffer, GLuint texture_fbo, GLCB cb,
return TRUE;
}
+
+/* convenience functions to simplify filter development */
+
+void
+gst_gl_filter_render_to_target (GstGLFilter *filter,
+ GLuint input, GLuint target,
+ GLCB func, gpointer data)
+{
+ gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
+ filter->fbo, filter->depthbuffer, target,
+ func,
+ filter->width, filter->height, input,
+ 0, filter->width, 0, filter->height,
+ GST_GL_DISPLAY_PROJECTION_ORTHO2D,
+ data);
+}
//blocking call, generate a texture using the pool
gst_gl_display_gen_texture (filter->display, &midtexture) ;
- //blocking call, use a FBO
- gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
- filter->fbo, filter->depthbuffer, midtexture, gst_gl_filterblur_hcallback,
- inbuf->width, inbuf->height, inbuf->texture,
- 0, filter->width, 0, filter->height,
- GST_GL_DISPLAY_PROJECTION_ORTHO2D, filterblur);
-
-
- //blocking call, use a FBO
- gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
- filter->fbo, filter->depthbuffer, outbuf->texture, gst_gl_filterblur_vcallback,
- inbuf->width, inbuf->height, midtexture,
- 0, filter->width, 0, filter->height,
- GST_GL_DISPLAY_PROJECTION_ORTHO2D, filterblur);
+ gst_gl_filter_render_to_target (filter, inbuf->texture, midtexture,
+ gst_gl_filterblur_hcallback, filterblur);
+ gst_gl_filter_render_to_target (filter, midtexture, outbuf->texture,
+ gst_gl_filterblur_vcallback, filterblur);
//blocking call, put the texture in the pool
gst_gl_display_del_texture (filter->display, midtexture);