SpectraDefaultRenderer::SpectraDefaultRenderer( SpectraApp& app, const std::shared_ptr<SpectraSharedObjects>& sh_obj, const std::shared_ptr<SpectraVisualisation>& doc_vis, wxGLCanvas* canvas ): SpectraRenderer(app, sh_obj, doc_vis, canvas) , doc_vis_prog(Common().BuildProgram("default_doc_vis.prog")) , doc_vis_projection_matrix(doc_vis_prog, "ProjectionMatrix") , doc_vis_camera_matrix(doc_vis_prog, "CameraMatrix") , doc_vis_stretch_matrix(doc_vis_prog, "StretchMatrix") , doc_vis_transf_matrix(doc_vis_prog, "TransfMatrix") , doc_vis_spectrum_tex(doc_vis_prog, "SpectrumTex") , doc_vis_spectrum_size(doc_vis_prog, "SpectrumSize") , doc_vis_samples_per_unit(doc_vis_prog, "SamplesPerUnit") , doc_vis_selected_time(doc_vis_prog, "SelectedTime") , doc_vis_selection_begin(doc_vis_prog, "SelectionBegin") , doc_vis_selection_end(doc_vis_prog, "SelectionEnd") , spectrum_plane_wrap( Common().SpectrumPlane( GLuint(DocVis().GridSamples()), GLuint(DocVis().SignalSpectrumSize()) ) ), spectrum_plane_vao(spectrum_plane_wrap.VAOForProgram(doc_vis_prog)) , vis_cue_prog(Common().BuildProgram("default_vis_cue.prog")) , vis_cue_projection_matrix(vis_cue_prog, "ProjectionMatrix") , vis_cue_camera_matrix(vis_cue_prog, "CameraMatrix") , vis_cue_stretch_matrix(vis_cue_prog, "StretchMatrix") , vis_cue_transf_matrix(vis_cue_prog, "TransfMatrix") , vis_cue_color(vis_cue_prog, "Color") , vis_cue_alpha(vis_cue_prog, "Alpha") , ground_grid_vao(Common().GroundUnitGrid().VAOForProgram(vis_cue_prog)) , wall_grid_vao(Common().WallUnitGrid().VAOForProgram(vis_cue_prog)) { CacheBgColor(); }
SpectraRenderer::SpectraRenderer( SpectraApp& app, const std::shared_ptr<SpectraSharedObjects>& sh_obj, const std::shared_ptr<SpectraVisualisation>& doc_vis, wxGLCanvas* canvas) : parent_app(app) , shared_objects(sh_obj) , document_vis(doc_vis) { assert(canvas); canvas->SetCurrent(DocVis().GLContext()); }
void SpectraDefaultRenderer::Render( SpectraDocumentView& view, wxGLCanvas* canvas ) { assert(canvas); canvas->SetCurrent(DocVis().GLContext()); oglplus::Context gl; gl.Viewport(view.Width(), view.Height()); gl.ClearColor(clear_r, clear_g, clear_b, 0.0); gl.ClearDepth(1.0f); gl.Clear().ColorBuffer().DepthBuffer(); gl.Enable(oglplus::Capability::DepthTest); RenderSpectrum(view); RenderVisualCues(view); }
void SpectraDefaultRenderer::RenderSpectrum(SpectraDocumentView& view) { doc_vis_prog.Use(); doc_vis_projection_matrix.TrySet(view.ProjectionMatrix()); doc_vis_camera_matrix.TrySet(view.CameraMatrix()); doc_vis_stretch_matrix.TrySet(view.StretchMatrix()); doc_vis_transf_matrix.TrySet(view.TransfMatrix()); oglplus::Texture::Active(0); DocVis().SpectrumTex().Bind(oglplus::Texture::Target::Buffer); doc_vis_spectrum_tex.TrySet(0); doc_vis_spectrum_size.TrySet(int(DocVis().SignalSpectrumSize())); doc_vis_samples_per_unit.TrySet(int(DocVis().SignalSamplesPerGrid())); doc_vis_selected_time.TrySet(DocVis().SelectedTime()); doc_vis_selection_begin.TrySet(DocVis().SelectionBegin()); doc_vis_selection_end.TrySet(DocVis().SelectionEnd()); spectrum_plane_vao.Bind(); spectrum_plane_wrap.Draw(view.SegmentCount()); }