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_ResourceCleaner.hxx>
9 #include <MMgt_TShared.hxx>
10 #include <Standard.hxx>
11 #include <Standard_DefineHandle.hxx>
12 #include <Handle_MMgt_TShared.hxx>
14 class Standard_Transient;
15 class Handle(Standard_Type);
16 class Handle(MMgt_TShared);
17 class OpenGl_ResourceCleaner;
19 //! Class represents basic OpenGl memory resource, which
20 //! could be removed only if appropriate context is avaliable;
21 //! The cleaning procedure is done by OpenGl_ResourceCleaner
22 class OpenGl_Resource : public MMgt_TShared
28 OpenGl_Resource() : myId(0) { }
31 OpenGl_Resource(GLuint theId) : myId(theId) { }
34 OpenGl_Resource(const OpenGl_Resource& theBase) : myId(theBase.myId) { }
37 OpenGl_Resource& operator = (const OpenGl_Resource& theBase)
39 this->myId = theBase.myId;
44 virtual ~OpenGl_Resource() { }
46 //! method clean() is accessible only by OpenGl_ResourceCleaner
47 friend class OpenGl_ResourceCleaner;
51 //! Clean procedure, should be called only by OpenGl_ResourceCleaner;
52 //! Each type of resource has its own cleaning procedure
53 virtual void Clean() = 0;
57 GLuint myId; // Id of OpenGl memory resource
61 DEFINE_STANDARD_HANDLE(OpenGl_Resource,MMgt_TShared)