Go to the documentation of this file.
29 #if MRPT_HAS_OPENGL_GLUT
33 #pragma comment(lib, "opengl32.lib")
34 #pragma comment(lib, "GlU32.lib")
37 #endif // MRPT_HAS_OPENGL_GLUT
81 dynamic_cast<mrpt::opengl::COpenGLViewport*>(ptr->clone()));
94 #if MRPT_HAS_OPENGL_GLUT
102 (*it)->render(win_dims[2], win_dims[3]);
105 glViewport(win_dims[0], win_dims[1], win_dims[2], win_dims[3]);
109 "The MRPT has been compiled with MRPT_HAS_OPENGL_GLUT=0! OpenGL "
110 "functions are not implemented");
144 view->m_objects.resize(
n);
146 view->m_objects.begin(), view->m_objects.end(),
158 for (i = 0; i <
n; i++)
160 CSerializable::Ptr newObj;
164 std::dynamic_pointer_cast<COpenGLViewport>(newObj);
165 newView->m_parent =
this;
185 if ((*it)->m_name == viewportName)
187 (*it)->insert(newObject);
192 "Error: viewport '%s' not found.", viewportName.c_str());
200 const string& str,
const string& viewportName)
206 if ((
obj = (*it)->getByName(str)))
break;
217 (*it)->initializeAllTextures();
229 lst.emplace_back(
string(
"VIEWPORT: ") +
v->m_name);
230 lst.emplace_back(
"============================================");
231 v->dumpListOfObjects(lst);
262 if ((*it)->m_name == viewportName)
return *it;
277 view->removeObject(
obj);
291 it2 != vp->m_objects.end(); ++it2)
292 if ((*it2)->traceRay(o, tmp))
341 ASSERTMSG_(vp,
"No opengl viewport exists with the given name");
343 return vp->getBoundingBox(bb_min, bb_max);
GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
uint8_t serializeGetVersion() const override
Must return the current versioning number of the object.
const Scalar * const_iterator
void initializeAllTextures()
Initializes all textures in the scene (See opengl::CTexturedPlane::loadTextureInOpenGL)
void insert(const CRenderizable::Ptr &newObject, const std::string &viewportName=std::string("main"))
Insert a new object into the scene, in the given viewport (by default, into the "main" viewport).
void serializeFrom(mrpt::serialization::CArchive &in, uint8_t serial_version) override
Pure virtual method for reading (deserializing) from an abstract archive.
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.
A renderizable object suitable for rendering with OpenGL's display lists.
GLsizei GLsizei GLuint * obj
virtual ~COpenGLScene()
Destructor:
#define MRPT_UNUSED_PARAM(a)
Determines whether this is an X86 or AMD64 platform.
std::shared_ptr< CRenderizable > Ptr
#define THROW_EXCEPTION_FMT(_FORMAT_STRING,...)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define THROW_EXCEPTION(msg)
#define ASSERT_(f)
Defines an assertion mechanism.
void dumpListOfObjects(std::vector< std::string > &lst)
Retrieves a list of all objects in text form.
Virtual base class for "archives": classes abstracting I/O streams.
void getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max, const std::string &vpn=std::string("main")) const
Evaluates the bounding box of the scene in the given viewport (default: "main").
TListViewports m_viewports
The list of viewports, indexed by name.
Saves data to a file and transparently compress the data using the given compression level.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
bool loadFromFile(const std::string &fil)
Loads the scene from a 3Dscene file, the format used by the application SceneViewer3D.
COpenGLViewport::Ptr createViewport(const std::string &viewportName)
Creates a new viewport, adding it to the scene and returning a pointer to the new object.
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
This must be inserted in all CSerializable classes implementation files.
GLAPI void GLAPIENTRY glGetIntegerv(GLenum pname, GLint *params)
#define ASSERTMSG_(f, __ERROR_MSG)
Defines an assertion mechanism.
bool saveToFile(const std::string &fil) const
Saves the scene to a 3Dscene file, loadable by the application SceneViewer3D.
CArchiveStreamBase< STREAM > archiveFrom(STREAM &s)
Helper function to create a templatized wrapper CArchive object for a: MRPT's CStream,...
void clear(bool createMainViewport=true)
Clear the list of objects and viewports in the scene, deleting objects' memory, and leaving just the ...
A viewport within a COpenGLScene, containing a set of OpenGL objects to render.
COpenGLScene & operator=(const COpenGLScene &obj)
Copy operator:
This base provides a set of functions for maths stuff.
void removeObject(const CRenderizable::Ptr &obj, const std::string &viewportName=std::string("main"))
Removes the given object from the scene (it also deletes the object to free its memory).
GLsizei const GLchar ** string
void serializeTo(mrpt::serialization::CArchive &out) const override
Pure virtual method for writing (serializing) to an abstract archive.
COpenGLViewport::Ptr getViewport(const std::string &viewportName=std::string("main")) const
Returns the viewport with the given name, or nullptr if it does not exist; note that the default view...
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
CRenderizable::Ptr getByName(const std::string &str, const std::string &viewportName=std::string("main"))
Returns the first object with a given name, or nullptr (an empty smart pointer) if not found.
The namespace for 3D scene representation and rendering.
std::shared_ptr< COpenGLViewport > Ptr
unsigned __int32 uint32_t
void render() const
Render this scene.
bool traceRay(const mrpt::poses::CPose3D &o, double &dist) const
Traces a ray.
COpenGLScene()
Constructor.
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at mié 12 jul 2023 10:03:34 CEST | |