glshader: port to using GstGLSLStage objects for string management
authorMatthew Waters <matthew@centricular.com>
Fri, 4 Sep 2015 06:02:32 +0000 (16:02 +1000)
committerMatthew Waters <matthew@centricular.com>
Thu, 15 Oct 2015 10:27:57 +0000 (21:27 +1100)
A GstGLShader is now simply a collection of stages that are
compiled and linked together into a program.  The uniform/attribute
interface has remained the same.

ext/gtk/gtkgstglwidget.c

index 3020f19..3e427a8 100644 (file)
@@ -118,12 +118,18 @@ gtk_gst_gl_widget_init_redisplay (GtkGstGLWidget * gst_widget)
 {
   GtkGstGLWidgetPrivate *priv = gst_widget->priv;
   const GstGLFuncs *gl = priv->context->gl_vtable;
+  GError *error = NULL;
 
-  priv->shader = gst_gl_shader_new (priv->context);
   gst_gl_insert_debug_marker (priv->other_context, "initializing redisplay");
+  if (!(priv->shader = gst_gl_shader_new_default (priv->context, &error))) {
+    GST_ERROR ("Failed to initialize shader: %s", error->message);
+    return;
+  }
 
-  gst_gl_shader_compile_with_default_vf_and_check (priv->shader,
-      &priv->attr_position, &priv->attr_texture);
+  priv->attr_position =
+      gst_gl_shader_get_attribute_location (priv->shader, "a_position");
+  priv->attr_texture =
+      gst_gl_shader_get_attribute_location (priv->shader, "a_texcoord");
 
   if (gl->GenVertexArrays) {
     gl->GenVertexArrays (1, &priv->vao);