c6ca52c96087ec5f4f8137c21bf0e20da4745521
[occt.git] / src / OpenGl / OpenGl_Caps.hxx
1 // Created on: 2013-08-25
2 // Created by: Kirill GAVRILOV
3 // Copyright (c) 2013 OPEN CASCADE SAS
4 //
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.
9 //
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.
12 //
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.
19
20 #ifndef _OpenGl_Caps_H__
21 #define _OpenGl_Caps_H__
22
23 #include <Standard_DefineHandle.hxx>
24 #include <Standard_Transient.hxx>
25 #include <Handle_Standard_Transient.hxx>
26
27 //! Class to define graphich driver capabilities.
28 //! Notice that these options will be ignored if particular functionality does not provided by GL driver
29 class OpenGl_Caps : public Standard_Transient
30 {
31
32 public: //! @name flags to disable particular functionality, should be used only for testing purposes!
33
34   Standard_Boolean vboDisable;        //!< flag permits VBO usage, will significantly affect performance (OFF by default)
35   Standard_Boolean pntSpritesDisable; //!< flag permits Point Sprites usage, will significantly affect performance (OFF by default)
36   Standard_Boolean keepArrayData;     //!< Disables freeing CPU memory after building VBOs (OFF by default)
37
38 public: //! @name context creation parameters
39
40   /**
41    * Request stereoscopic context (with Quad Buffer). This flag requires support in OpenGL driver.
42    *
43    * OFF by default.
44    */
45   Standard_Boolean contextStereo;
46
47   /**
48    * Request debug GL context. This flag requires support in OpenGL driver.
49    *
50    * When turned on OpenGL driver emits error and warning messages to provided callback
51    * (see OpenGl_Context - messages will be printed to standard output).
52    * Affects performance - thus should not be turned on by products in released state.
53    *
54    * OFF by default. Currently implemented only for Windows (WGL).
55    */
56   Standard_Boolean contextDebug;
57
58   /**
59    * Disable hardware acceleration.
60    *
61    * This flag overrides default behavior, when accelerated context always preferred over software ones:
62    * - on Windows will force Microsoft software implementation;
63    * - on Mac OS X, forces Apple software implementation.
64    *
65    * Software implementations are dramatically slower - should never be used.
66    *
67    * OFF by default. Currently implemented only for Windows (WGL) and Mac OS X (Cocoa).
68    */
69   Standard_Boolean contextNoAccel;
70
71 public: //! @name flags to activate verbose output
72
73   //! Print GLSL program compilation/linkage warnings, if any. OFF by default.
74   Standard_Boolean glslWarnings;
75
76 public: //! @name class methods
77
78   //! Default constructor - initialize with most optimal values.
79   Standard_EXPORT OpenGl_Caps();
80
81   //! Destructor.
82   Standard_EXPORT virtual ~OpenGl_Caps();
83
84   //! Copy maker.
85   Standard_EXPORT OpenGl_Caps& operator= (const OpenGl_Caps& theCopy);
86
87 private:
88
89   //! Not implemented
90   OpenGl_Caps (const OpenGl_Caps& );
91
92 public:
93
94   DEFINE_STANDARD_RTTI(OpenGl_Caps) // Type definition
95
96 };
97
98 DEFINE_STANDARD_HANDLE(OpenGl_Caps, Standard_Transient)
99
100 #endif // _OpenGl_Caps_H__