Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:38

0001 #pragma once
0002 /**
0003 SGLFW_Evt.h : manage event data and corresponding OpenGL progs
0004 ===============================================================
0005 
0006 HMM : Perhaps rename SGLFW_Rec.h for record
0007 
0008 Started from the old SGLFW_Event.h and removed the geometry rendering,
0009 as prefer modular arrangement with geometry rendering in SGLFW_Scene.h
0010 and event rendering here.
0011 
0012 ::
0013 
0014     (ok) A[blyth@localhost opticks]$ opticks-fl SGLFW_Evt
0015     ./CSGOptiX/tests/CSGOptiXRenderInteractiveTest.cc
0016     ./sysrap/CMakeLists.txt
0017     ./sysrap/SRecord.h
0018     ./sysrap/SGLFW_Event_TO_BE_REMOVED.h
0019     ./sysrap/tests/SGLFW_SOPTIX_Scene_test.cc
0020     ./sysrap/tests/SGLFW_Evt_test.cc
0021     ./sysrap/tests/SGLFW_Evt_test.sh
0022     ./sysrap/tests/tests.txt
0023     ./sysrap/SGLFW_Evt.h
0024 
0025 
0026 **/
0027 
0028 #include "ssys.h"
0029 #include "spath.h"
0030 #include "SGLFW.h"
0031 #include "SGLFW_Record.h"
0032 #include "SGLFW_Gen.h"
0033 
0034 struct SGLFW_Evt
0035 {
0036     static constexpr const char* _SGLFW_Evt__level = "SGLFW_Evt__level" ;
0037     int           level ;
0038 
0039     SGLFW&        gl ;
0040     SGLM&         gm ;
0041 
0042     SGLFW_Record*   ar ;
0043     SGLFW_Record*   br ;
0044     SGLFW_Gen*      gs ;
0045 
0046 
0047     const char* shader_fold ;
0048     const char* rec_shader_name ;
0049     const char* rec_shader_dir ;
0050     const char* gen_shader_name ;
0051     const char* gen_shader_dir ;
0052 
0053     SGLFW_Program*  rec_prog;
0054     SGLFW_Program*  gen_prog;
0055 
0056     SGLFW_Evt(SGLFW& _gl );
0057     void init();
0058 
0059     void render();
0060     std::string desc() const ;
0061 };
0062 
0063 
0064 inline SGLFW_Evt::SGLFW_Evt(SGLFW& _gl )
0065     :
0066     level(ssys::getenvint(_SGLFW_Evt__level,0)),
0067     gl(_gl),
0068     gm(gl.gm),
0069     ar(SGLFW_Record::Create(gm.ar, gm.timeparam_ptr)),
0070     br(SGLFW_Record::Create(gm.br, gm.timeparam_ptr)),
0071     gs(SGLFW_Gen::Create(   gm.gs, gm.timeparam_ptr)),
0072     shader_fold(nullptr),
0073     rec_shader_name(nullptr),
0074     rec_shader_dir(nullptr),
0075     gen_shader_name(nullptr),
0076     gen_shader_dir(nullptr),
0077     rec_prog(nullptr),
0078     gen_prog(nullptr)
0079 {
0080     init();
0081 }
0082 
0083 inline void SGLFW_Evt::init()
0084 {
0085     shader_fold = spath::Resolve("${SGLFW_Evt__shader_fold:-$OPTICKS_PREFIX/gl}") ;
0086 
0087     rec_shader_name = spath::Resolve("${SGLFW_Evt__rec_shader_name:-rec_flying_point_persist}") ;
0088     rec_shader_dir = spath::Resolve(shader_fold, rec_shader_name);
0089     rec_prog = new SGLFW_Program(rec_shader_dir, nullptr, nullptr, nullptr, "ModelViewProjection", gm.MVP_ptr );
0090 
0091     gen_shader_name = spath::Resolve("${SGLFW_Evt__gen_shader_name:-gen_line_strip}") ;
0092     gen_shader_dir = spath::Resolve(shader_fold, gen_shader_name);
0093     gen_prog = new SGLFW_Program(gen_shader_dir, nullptr, nullptr, nullptr, "ModelViewProjection", gm.MVP_ptr );
0094 
0095     if(level>0) std::cout << desc();
0096 }
0097 
0098 /**
0099 SGLFW_Evt::render
0100 --------------------
0101 
0102 **/
0103 
0104 inline void SGLFW_Evt::render()
0105 {
0106     if(ar && gm.option.A) ar->render(rec_prog);   //record.npy render
0107     if(br && gm.option.B) br->render(rec_prog);   //record.npy render
0108     if(gs && gm.option.G) gs->render(gen_prog);   //genstep.npy render
0109 }
0110 
0111 
0112 inline std::string  SGLFW_Evt::desc() const
0113 {
0114     std::stringstream ss;
0115     ss
0116         << "[SGLFW_Evt::desc\n"
0117         << "  level " << level << "\n"
0118         << "  shader_fold [" << ( shader_fold ? shader_fold : "-" ) << "]\n"
0119         << "  rec_shader_name [" << ( rec_shader_name ? rec_shader_name : "-" ) << "]\n"
0120         << "  rec_shader_dir  [" << ( rec_shader_dir  ? rec_shader_dir  : "-" ) << "]\n"
0121         << "  rec_prog    [" << ( rec_prog ? "YES" : "NO ") << "]\n"
0122         << "  gen_shader_name [" << ( gen_shader_name ? gen_shader_name : "-" ) << "]\n"
0123         << "  gen_shader_dir  [" << ( gen_shader_dir  ? gen_shader_dir  : "-" ) << "]\n"
0124         << "  gen_prog    [" << ( gen_prog ? "YES" : "NO ") << "]\n"
0125         << "]SGLFW_Evt::desc\n"
0126         ;
0127     std::string str = ss.str();
0128     return str ;
0129 }
0130 
0131