1 // File: OpenGl_Resource.hxx
2 // Created: 18.03.11 9:20:00
3 // Author: Anton POLETAEV
5 #ifndef _OPENGL_RESOURCE_H
6 #define _OPENGL_RESOURCE_H
8 #include <OpenGl_GlCore11.hxx>
10 #include <OpenGl_ResourceCleaner.hxx>
11 #include <MMgt_TShared.hxx>
12 #include <Handle_MMgt_TShared.hxx>
14 class Standard_Transient;
15 class Handle(Standard_Type);
16 class Handle(MMgt_TShared);
17 class Handle(OpenGl_Context);
18 class OpenGl_ResourceCleaner;
20 //! Class represents basic OpenGl memory resource, which
21 //! could be removed only if appropriate context is avaliable;
22 //! The cleaning procedure is done by OpenGl_ResourceCleaner
23 class OpenGl_Resource : public MMgt_TShared
29 OpenGl_Resource() : myId(0) { }
32 OpenGl_Resource(GLuint theId) : myId(theId) { }
35 OpenGl_Resource(const OpenGl_Resource& theBase) : myId(theBase.myId) { }
38 OpenGl_Resource& operator= (const OpenGl_Resource& theBase)
40 this->myId = theBase.myId;
45 virtual ~OpenGl_Resource() {}
47 //! method clean() is accessible only by OpenGl_ResourceCleaner
48 friend class OpenGl_ResourceCleaner;
52 //! Clean procedure, should be called only by OpenGl_ResourceCleaner;
53 //! Each type of resource has its own cleaning procedure
54 virtual void Clean (const Handle(OpenGl_Context)& theGlContext) = 0;
58 GLuint myId; // Id of OpenGl memory resource
62 DEFINE_STANDARD_HANDLE(OpenGl_Resource,MMgt_TShared)