static void _src_generate_fbo_gl (GstGLContext * context, GstGLTestSrc * src) { src->fbo = gst_gl_framebuffer_new_with_default_depth (src->context, GST_VIDEO_INFO_WIDTH (&src->out_info), GST_VIDEO_INFO_HEIGHT (&src->out_info)); }
static void init_blit (gpointer data) { GstGLContext *context = data; const GstGLFuncs *gl = context->gl_vtable; if (!vbo) { if (gl->GenVertexArrays) { gl->GenVertexArrays (1, &vao); gl->BindVertexArray (vao); } gl->GenBuffers (1, &vbo); gl->BindBuffer (GL_ARRAY_BUFFER, vbo); gl->BufferData (GL_ARRAY_BUFFER, 4 * 5 * sizeof (GLfloat), vertices, GL_STATIC_DRAW); gl->GenBuffers (1, &vbo_indices); gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, vbo_indices); gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices), indices, GL_STATIC_DRAW); if (gl->GenVertexArrays) { _bind_buffer (context); gl->BindVertexArray (0); } gl->BindBuffer (GL_ARRAY_BUFFER, 0); gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); } /* has to be called in the thread that is going to use the framebuffer */ fbo2 = gst_gl_framebuffer_new_with_default_depth (context, 320, 240); fail_if (fbo2 == NULL, "failed to create framebuffer object"); }
static void init (gpointer data) { GstGLContext *context = data; GError *error = NULL; GstVideoInfo v_info; GstGLMemoryAllocator *allocator; GstGLVideoAllocationParams *params; gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA, 320, 240); allocator = gst_gl_memory_allocator_get_default (context); params = gst_gl_video_allocation_params_new (context, NULL, &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, GST_GL_RGBA); /* has to be called in the thread that is going to use the framebuffer */ fbo = gst_gl_framebuffer_new_with_default_depth (context, 320, 240); fail_if (fbo == NULL, "failed to create framebuffer object"); gl_tex = (GstGLMemory *) gst_gl_base_memory_alloc ((GstGLBaseMemoryAllocator *) allocator, (GstGLAllocationParams *) params); gl_tex2 = (GstGLMemory *) gst_gl_base_memory_alloc ((GstGLBaseMemoryAllocator *) allocator, (GstGLAllocationParams *) params); gst_object_unref (allocator); gst_gl_allocation_params_free ((GstGLAllocationParams *) params); fail_if (gl_tex == NULL, "failed to create texture"); shader = gst_gl_shader_new_default (context, &error); fail_if (shader == NULL, "failed to create shader object: %s", error->message); shader_attr_position_loc = gst_gl_shader_get_attribute_location (shader, "a_position"); shader_attr_texture_loc = gst_gl_shader_get_attribute_location (shader, "a_texcoord"); }