1 // Created on: 2011-03-18
2 // Created by: Anton POLETAEV
3 // Copyright (c) 2011-2012 OPEN CASCADE SAS
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
21 #ifndef _OPENGL_RESOURCE_H
22 #define _OPENGL_RESOURCE_H
24 #include <OpenGl_GlCore11.hxx>
26 #include <OpenGl_ResourceCleaner.hxx>
27 #include <MMgt_TShared.hxx>
28 #include <Handle_MMgt_TShared.hxx>
30 class Standard_Transient;
31 class Handle(Standard_Type);
32 class Handle(MMgt_TShared);
33 class Handle(OpenGl_Context);
34 class OpenGl_ResourceCleaner;
36 //! Class represents basic OpenGl memory resource, which
37 //! could be removed only if appropriate context is avaliable;
38 //! The cleaning procedure is done by OpenGl_ResourceCleaner
39 class OpenGl_Resource : public MMgt_TShared
45 OpenGl_Resource() : myId(0) { }
48 OpenGl_Resource(GLuint theId) : myId(theId) { }
51 virtual ~OpenGl_Resource() {}
53 //! method clean() is accessible only by OpenGl_ResourceCleaner
54 friend class OpenGl_ResourceCleaner;
58 //! Clean procedure, should be called only by OpenGl_ResourceCleaner;
59 //! Each type of resource has its own cleaning procedure
60 virtual void Clean (const Handle(OpenGl_Context)& theGlContext) = 0;
64 GLuint myId; // Id of OpenGl memory resource
68 DEFINE_STANDARD_RTTI(OpenGl_Resource) // Type definition
72 DEFINE_STANDARD_HANDLE(OpenGl_Resource,MMgt_TShared)