0026061: TNaming_Selector crash in select method.
[occt.git] / src / OpenGl / OpenGl_Caps.hxx
CommitLineData
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
25class OpenGl_Caps : public Standard_Transient
26{
27
abe46077 28public: //! @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
35public: //! @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 94public: //! @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 99public: //! @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
110private:
111
112 //! Not implemented
113 OpenGl_Caps (const OpenGl_Caps& );
114
115public:
116
117 DEFINE_STANDARD_RTTI(OpenGl_Caps) // Type definition
118
119};
120
121DEFINE_STANDARD_HANDLE(OpenGl_Caps, Standard_Transient)
122
123#endif // _OpenGl_Caps_H__