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); */ }
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); }
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); }