8 #ifndef SUPERIMPOSECAD_H 9 #define SUPERIMPOSECAD_H 23 #include <GLFW/glfw3.h> 24 #include <glm/glm.hpp> 61 SICAD(
const ModelPathContainer& objfile_map,
const GLsizei cam_width,
const GLsizei cam_height,
const GLfloat cam_fx,
const GLfloat cam_fy,
const GLfloat cam_cx,
const GLfloat cam_cy);
81 SICAD(
const ModelPathContainer& objfile_map,
const GLsizei cam_width,
const GLsizei cam_height,
const GLfloat cam_fx,
const GLfloat cam_fy,
const GLfloat cam_cx,
const GLfloat cam_cy,
const GLint num_images);
115 SICAD(
const ModelPathContainer& objfile_map,
const GLsizei cam_width,
const GLsizei cam_height,
const GLfloat cam_fx,
const GLfloat cam_fy,
const GLfloat cam_cx,
const GLfloat cam_cy,
const GLint num_images,
const std::string& shader_folder);
151 SICAD(
const ModelPathContainer& objfile_map,
const GLsizei cam_width,
const GLsizei cam_height,
const GLfloat cam_fx,
const GLfloat cam_fy,
const GLfloat cam_cx,
const GLfloat cam_cy,
const GLint num_images,
const std::string& shader_folder,
const std::vector<float>& ogl_to_cam);
193 virtual bool superimpose(
const std::vector<ModelPoseContainer>& objpos_multimap,
const double* cam_x,
const double* cam_o, cv::Mat& img);
196 const GLsizei cam_width,
const GLsizei cam_height,
const GLfloat cam_fx,
const GLfloat cam_fy,
const GLfloat cam_cx,
const GLfloat cam_cy);
198 virtual bool superimpose(
const std::vector<ModelPoseContainer>& objpos_multimap,
const double* cam_x,
const double* cam_o, cv::Mat& img,
199 const GLsizei cam_width,
const GLsizei cam_height,
const GLfloat cam_fx,
const GLfloat cam_fy,
const GLfloat cam_cx,
const GLfloat cam_cy);
233 virtual bool superimpose(
const ModelPoseContainer& objpos_map,
const double* cam_x,
const double* cam_o,
const size_t pbo_index,
const cv::Mat& img);
254 virtual bool superimpose(
const std::vector<ModelPoseContainer>& objpos_multimap,
const double* cam_x,
const double* cam_o,
const size_t pbo_index);
275 virtual bool superimpose(
const std::vector<ModelPoseContainer>& objpos_multimap,
const double* cam_x,
const double* cam_o,
const size_t pbo_index,
const cv::Mat& img);
295 std::pair<const GLuint*, size_t>
getPBOs()
const;
306 std::pair<bool, GLuint>
getPBO(
const size_t pbo_index)
const;
308 bool setProjectionMatrix(
const GLsizei cam_width,
const GLsizei cam_height,
const GLfloat cam_fx,
const GLfloat cam_fy,
const GLfloat cam_cx,
const GLfloat cam_cy);
416 void factorize_int(
const GLsizei area,
const GLsizei width_limit,
const GLsizei height_limit, GLsizei& width, GLsizei& height);
std::unordered_map< std::string, std::string > ModelPathContainer
GLuint texture_background_
ModelContainer model_obj_
void renderBackground(const cv::Mat &img) const
std::pair< std::string, std::string > ModelPathElement
Shader * shader_background_
static int class_counter_
void setBackgroundOpt(bool show_background)
std::thread::id main_thread_id_
int getTilesNumber() const
bool getBackgroundOpt() const
std::pair< bool, GLuint > getPBO(const size_t pbo_index) const
Returns pbo_index-th Pixel Buffer Object (PBO) value.
static GLsizei renderbuffer_size_
std::pair< std::string, Model * > ModelElement
SICAD(const ModelPathContainer &objfile_map, const GLsizei cam_width, const GLsizei cam_height, const GLfloat cam_fx, const GLfloat cam_fy, const GLfloat cam_cx, const GLfloat cam_cy)
Create a SICAD object with a dedicated OpenGL context and default shaders.
bool setProjectionMatrix(const GLsizei cam_width, const GLsizei cam_height, const GLfloat cam_fx, const GLfloat cam_fy, const GLfloat cam_cx, const GLfloat cam_cy)
void setWireframeOpt(bool show_mesh_wires)
bool superimpose(const ModelPoseContainer &objpos_map, const double *cam_x, const double *cam_o, cv::Mat &img) override
Render the mesh models in the pose specified in objpos_map and move the virtual camera in cam_x posit...
void setOglWindowShouldClose(bool should_close)
GLenum getWireframeOpt() const
A Superimpose derived class to superimpose mesh models on images.
bool getOglWindowShouldClose()
std::multimap< std::string, ModelPose > ModelPoseContainer
GLuint texture_depth_buffer_
void setWireframe(GLenum mode)
glm::mat4 getViewTransformationMatrix(const double *cam_x, const double *cam_o)
GLsizei framebuffer_height_
GLsizei framebuffer_width_
virtual void releaseContext() const
Make the current thread OpenGL context not current.
std::pair< const GLuint *, size_t > getPBOs() const
Returns the Pixel Buffer Object (PBO) vector and its size.
std::unordered_map< std::string, Model * > ModelContainer
void setMipmapsOpt(const MIPMaps &mipmaps)
void factorize_int(const GLsizei area, const GLsizei width_limit, const GLsizei height_limit, GLsizei &width, GLsizei &height)
GLuint texture_color_buffer_
MIPMaps getMipmapsOpt() const
const std::string log_ID_
std::unique_ptr< Shader > shader_mesh_texture_