58655684 |
1 | // Created on: 2013-08-25 |
2 | // Created by: Kirill GAVRILOV |
d5f74e42 |
3 | // Copyright (c) 2013-2014 OPEN CASCADE SAS |
58655684 |
4 | // |
973c2be1 |
5 | // This file is part of Open CASCADE Technology software library. |
58655684 |
6 | // |
d5f74e42 |
7 | // This library is free software; you can redistribute it and/or modify it under |
8 | // the terms of the GNU Lesser General Public License version 2.1 as published |
973c2be1 |
9 | // by the Free Software Foundation, with special exception defined in the file |
10 | // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
11 | // distribution for complete text of the license and disclaimer of any warranty. |
58655684 |
12 | // |
973c2be1 |
13 | // Alternatively, this file may be used under the terms of Open CASCADE |
14 | // commercial license or contractual agreement. |
58655684 |
15 | |
16 | #ifndef _OpenGl_Caps_H__ |
17 | #define _OpenGl_Caps_H__ |
18 | |
19 | #include <Standard_DefineHandle.hxx> |
20 | #include <Standard_Transient.hxx> |
21 | #include <Handle_Standard_Transient.hxx> |
22 | |
8625ef7e |
23 | //! Class to define graphic driver capabilities. |
58655684 |
24 | //! Notice that these options will be ignored if particular functionality does not provided by GL driver |
25 | class OpenGl_Caps : public Standard_Transient |
26 | { |
27 | |
abe46077 |
28 | public: //! @name flags to disable particular functionality, should be used only for testing purposes! |
58655684 |
29 | |
a577aaab |
30 | Standard_Boolean vboDisable; //!< flag permits VBO usage, will significantly affect performance (OFF by default) |
31 | Standard_Boolean pntSpritesDisable; //!< flag permits Point Sprites usage, will significantly affect performance (OFF by default) |
392ac980 |
32 | Standard_Boolean keepArrayData; //!< Disables freeing CPU memory after building VBOs (OFF by default) |
8625ef7e |
33 | Standard_Boolean ffpEnable; //!< Enables FFP (fixed-function pipeline), do not use built-in GLSL programs (ON by default on desktop OpenGL and OFF on OpenGL ES) |
58655684 |
34 | |
35 | public: //! @name context creation parameters |
36 | |
25b97fac |
37 | /** |
38 | * Specify that driver should not swap back/front buffers at the end of frame. |
39 | * Useful when OCCT Viewer is integrated into existing OpenGL rendering pipeline as part, |
40 | * thus swapping part is performed outside. |
41 | * |
42 | * OFF by default. |
43 | */ |
44 | Standard_Boolean buffersNoSwap; |
45 | |
abe46077 |
46 | /** |
47 | * Request stereoscopic context (with Quad Buffer). This flag requires support in OpenGL driver. |
48 | * |
49 | * OFF by default. |
50 | */ |
51 | Standard_Boolean contextStereo; |
52 | |
53 | /** |
54 | * Request debug GL context. This flag requires support in OpenGL driver. |
55 | * |
56 | * When turned on OpenGL driver emits error and warning messages to provided callback |
57 | * (see OpenGl_Context - messages will be printed to standard output). |
58 | * Affects performance - thus should not be turned on by products in released state. |
59 | * |
60 | * OFF by default. Currently implemented only for Windows (WGL). |
61 | */ |
62 | Standard_Boolean contextDebug; |
63 | |
64 | /** |
65 | * Disable hardware acceleration. |
66 | * |
67 | * This flag overrides default behavior, when accelerated context always preferred over software ones: |
68 | * - on Windows will force Microsoft software implementation; |
69 | * - on Mac OS X, forces Apple software implementation. |
70 | * |
71 | * Software implementations are dramatically slower - should never be used. |
72 | * |
73 | * OFF by default. Currently implemented only for Windows (WGL) and Mac OS X (Cocoa). |
74 | */ |
75 | Standard_Boolean contextNoAccel; |
58655684 |
76 | |
4e1523ef |
77 | /** |
78 | * Request backward-compatible GL context. This flag requires support in OpenGL driver. |
79 | * |
80 | * Backward-compatible profile includes deprecated functionality like FFP (fixed-function pipeline), |
81 | * and might be useful for compatibility with application OpenGL code. |
82 | * |
83 | * Most drivers support all features within backward-compatibility profile, |
84 | * but some limit functionality to OpenGL 2.1 (e.g. OS X) when core profile is not explicitly requested. |
85 | * |
86 | * Requires OpenGL 3.2+ drivers. |
87 | * Has no effect on OpenGL ES 2.0+ drivers (which do not provie FFP compatibility). |
88 | * Interacts with ffpEnable option, which should be disabled within core profile. |
89 | * |
90 | * ON by default. |
91 | */ |
92 | Standard_Boolean contextCompatible; |
93 | |
392ac980 |
94 | public: //! @name flags to activate verbose output |
95 | |
96 | //! Print GLSL program compilation/linkage warnings, if any. OFF by default. |
97 | Standard_Boolean glslWarnings; |
e276548b |
98 | |
58655684 |
99 | public: //! @name class methods |
100 | |
101 | //! Default constructor - initialize with most optimal values. |
102 | Standard_EXPORT OpenGl_Caps(); |
103 | |
104 | //! Destructor. |
105 | Standard_EXPORT virtual ~OpenGl_Caps(); |
106 | |
107 | //! Copy maker. |
108 | Standard_EXPORT OpenGl_Caps& operator= (const OpenGl_Caps& theCopy); |
109 | |
110 | private: |
111 | |
112 | //! Not implemented |
113 | OpenGl_Caps (const OpenGl_Caps& ); |
114 | |
115 | public: |
116 | |
117 | DEFINE_STANDARD_RTTI(OpenGl_Caps) // Type definition |
118 | |
119 | }; |
120 | |
121 | DEFINE_STANDARD_HANDLE(OpenGl_Caps, Standard_Transient) |
122 | |
123 | #endif // _OpenGl_Caps_H__ |