File indexing completed on 2026-04-09 07:49:38
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
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
0100
0101
0102
0103
0104 inline void SGLFW_Evt::render()
0105 {
0106 if(ar && gm.option.A) ar->render(rec_prog);
0107 if(br && gm.option.B) br->render(rec_prog);
0108 if(gs && gm.option.G) gs->render(gen_prog);
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