And remove unused arguments.
gst_gl_shader_set_uniform_1fv (shader, "kernel", 7,
gst_gl_effects_blur_kernel ());
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
}
gst_gl_shader_set_uniform_1fv (shader, "kernel", 7,
gst_gl_effects_blur_kernel ());
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
}
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1fv (shader, "kernel", 7, gauss_kernel);
gst_gl_shader_set_uniform_1f (shader, "gauss_width", width);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1fv (shader, "kernel", 7, gauss_kernel);
gst_gl_shader_set_uniform_1f (shader, "gauss_height", height);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_use (shader);
gl->ActiveTexture (GL_TEXTURE2);
- gl->BindTexture (GL_TEXTURE_2D, effects->intexture);
+ gl->BindTexture (GL_TEXTURE_2D, effects->intexture->tex_id);
gst_gl_shader_set_uniform_1f (shader, "alpha", 1.0f);
gst_gl_shader_set_uniform_1i (shader, "base", 2);
gst_gl_shader_set_uniform_1f (shader, "beta", (gfloat) 1 / 3.5f);
gst_gl_shader_set_uniform_1i (shader, "blend", 1);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, kernel);
gst_gl_shader_set_uniform_1i (shader, "invert", effects->invert);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
}
gst_gl_shader_set_uniform_1i (shader, "curve", 1);
}
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "curve", 1);
}
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
}
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
gst_gl_shader_set_uniform_1f (shader, "width", width);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
}
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
gst_gl_shader_set_uniform_1f (shader, "height", height);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
}
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
gst_gl_shader_set_uniform_1i (shader, "invert", effects->invert);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
}
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1i (shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, gauss_kernel);
gst_gl_shader_set_uniform_1f (shader, "gauss_width", width);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, gauss_kernel);
gst_gl_shader_set_uniform_1f (shader, "gauss_height", height);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
/* multipass separable sobel */
gl->BindTexture (GL_TEXTURE_2D, texture);
gst_gl_shader_set_uniform_1i (shader, "tex", 1);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1i (shader, "tex", 1);
gst_gl_shader_set_uniform_1f (shader, "width", width);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1i (shader, "tex", 1);
gst_gl_shader_set_uniform_1f (shader, "height", height);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1i (shader, "tex", 1);
gst_gl_shader_set_uniform_1i (shader, "invert", TRUE);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
/* end of sobel passes */
gst_gl_shader_use (shader);
gl->ActiveTexture (GL_TEXTURE2);
- gl->BindTexture (GL_TEXTURE_2D, effects->midtexture[2]);
+ gl->BindTexture (GL_TEXTURE_2D, effects->midtexture[2]->tex_id);
gst_gl_shader_set_uniform_1i (shader, "base", 2);
gst_gl_shader_set_uniform_1f (shader, "alpha", (gfloat) 0.5f);
gst_gl_shader_set_uniform_1i (shader, "blend", 1);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
void
gl->BindTexture (GL_TEXTURE_2D, tex_id);
- gst_gl_filter_draw_texture (filter, tex_id, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static gboolean
gst_gl_shader_set_uniform_1f (shader, "height",
GST_VIDEO_INFO_HEIGHT (&filter->out_info));
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1f (shader, "height",
GST_VIDEO_INFO_HEIGHT (&filter->out_info));
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
/* we keep the previous buffer around so this is safe */
deinterlace_filter->prev_tex = texture;
gst_gl_shader_set_uniform_1i (differencematte->shader[0], "saved", 1);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1f (differencematte->shader[1], "gauss_width",
width);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1f (differencematte->shader[2], "gauss_height",
height);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1i (differencematte->shader[3], "alpha", 2);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static void
gst_gl_shader_set_uniform_1i (differencematte->identity_shader, "tex", 0);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
static gboolean
gl->ActiveTexture (GL_TEXTURE0);
gl->BindTexture (GL_TEXTURE_2D, texture);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
gst_object_unref (shader);
}
cb.height = in_height;
gst_gl_context_use_fbo_v2 (context, out_width, out_height,
- filter->fbo, filter->depthbuffer, target, _glcb2, &cb);
+ filter->fbo, filter->depthbuffer, output->tex_id, _glcb2, &cb);
}
static void
gst_gl_shader_set_uniform_1f (filter->default_shader, "width", width);
gst_gl_shader_set_uniform_1f (filter->default_shader, "height", height);
- gst_gl_filter_draw_texture (filter, texture, width, height);
+ gst_gl_filter_draw_fullscreen_quad (filter);
}
/**
}
/**
- * gst_gl_filter_draw_texture:
+ * gst_gl_filter_draw_fullscreen_quad:
* @filter: a #GstGLFilter
- * @texture: the texture to draw
- * @width: width of @texture
- * @height: height of texture
*
- * Draws @texture into the OpenGL scene at the specified @width and @height.
+ * Render a fullscreen quad using the current GL state. The only GL state this
+ * modifies is the necessary vertex/index buffers and, if necessary, a
+ * Vertex Array Object for drawing a fullscreen quad. Framebuffer state,
+ * any shaders, viewport state, etc must be setup by the caller.
*/
void
-gst_gl_filter_draw_texture (GstGLFilter * filter, GLuint texture,
- guint width, guint height)
+gst_gl_filter_draw_fullscreen_quad (GstGLFilter * filter)
{
GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
GstGLFuncs *gl = context->gl_vtable;
- GST_DEBUG ("drawing texture:%u dimensions:%ux%u", texture, width, height);
-
{
if (!filter->vertex_buffer) {
if (gl->GenVertexArrays) {
void gst_gl_filter_render_to_target_with_shader (GstGLFilter * filter, gboolean resize,
GLuint input, GLuint target, GstGLShader *shader);
-void gst_gl_filter_draw_texture (GstGLFilter *filter, GLuint texture, guint width, guint height);
+void gst_gl_filter_draw_fullscreen_quad (GstGLFilter *filter);
G_END_DECLS