Ejemplo n.º 1
0
static void
_init_scene (Gst3DScene * scene)
{
  GstGLContext *context = scene->context;
  Gst3DNode *axes_node;
  GError *error = NULL;
  Gst3DShader *uv_shader =
      gst_3d_shader_new_vert_frag (context, "mvp_uv.vert", "debug_uv.frag", &error);

  if (uv_shader == NULL) {
    GST_WARNING ("Failed to create VR shaders. Error: %s", error->message);
    g_clear_error (&error);
    return; /* FIXME: Add boolean return result */
  }

  axes_node = gst_3d_node_new_debug_axes (context);
  gst_3d_scene_append_node (scene, axes_node);

  Gst3DMesh *sphere_mesh = gst_3d_mesh_new_sphere (context, 0.5, 100, 100);
  Gst3DNode *sphere_node =
      gst_3d_node_new_from_mesh_shader (context, sphere_mesh, uv_shader);

  gst_3d_scene_append_node (scene, sphere_node);
  /*
     GstGLFuncs *gl = context->gl_vtable;
     Gst3DMesh * plane_mesh = gst_3d_mesh_new_plane (context, 1.0);
     Gst3DMesh *cube_mesh = gst_3d_mesh_new_cube (context);
     gst_gl_shader_use (axes_node->shader->shader);
     gst_gl_shader_use (self->shader);
     gst_gl_shader_set_uniform_1f (self->shader, "aspect_ratio",
     (gfloat) GST_VIDEO_INFO_WIDTH (v_info) /
     (gfloat) GST_VIDEO_INFO_HEIGHT (v_info));
     gst_gl_context_clear_shader (self->base.context);
   */
}
Ejemplo n.º 2
0
static void
_init_scene (Gst3DScene * scene)
{
  GstGLContext *context = scene->context;
  GstGLFuncs *gl = context->gl_vtable;
  GError *error = NULL;
  Gst3DMesh *sphere_mesh;
  Gst3DNode *sphere_node;
  Gst3DShader *sphere_shader =
      gst_3d_shader_new_vert_frag (context, "mvp_uv.vert",
      "texture_uv.frag", &error);
  if (sphere_shader == NULL) {
    GST_WARNING ("Failed to create VR compositor shaders. Error: %s", error->message);
    g_clear_error (&error);
    return; /* FIXME: Add boolean return result */
  }

  sphere_mesh = gst_3d_mesh_new_sphere (context, 800.0, 100, 100);
  sphere_node = gst_3d_node_new_from_mesh_shader (context, sphere_mesh, sphere_shader);
  gst_3d_scene_append_node (scene, sphere_node);

  gl->ClearColor (0.f, 0.f, 0.f, 0.f);
  gl->ActiveTexture (GL_TEXTURE0);

  gst_3d_shader_bind (sphere_shader);
  gst_gl_shader_set_uniform_1i (sphere_shader->shader, "texture", 0);
}
Ejemplo n.º 3
0
void
gst_3d_renderer_init_stereo (Gst3DRenderer * self, Gst3DCamera * cam)
{
  GstGLFuncs *gl = self->context->gl_vtable;
  Gst3DCameraHmd *hmd_cam = GST_3D_CAMERA_HMD (cam);
  Gst3DHmd *hmd = hmd_cam->hmd;
  float aspect_ratio = hmd->left_aspect;
  self->render_plane = gst_3d_mesh_new_plane (self->context, aspect_ratio);
  self->shader = gst_3d_shader_new_vert_frag (self->context, "mvp_uv.vert",
      "texture_uv.frag");
  gst_3d_mesh_bind_shader (self->render_plane, self->shader);

  _create_fbo (gl, &self->left_fbo, &self->left_color_tex,
      self->eye_width, self->eye_height);
  _create_fbo (gl, &self->right_fbo, &self->right_color_tex,
      self->eye_width, self->eye_height);

  gst_3d_shader_bind (self->shader);
  gst_gl_shader_set_uniform_1i (self->shader->shader, "texture", 0);
}