Warning, file /include/opencascade/OpenGl_GraphicDriver.hxx was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef _OpenGl_GraphicDriver_HeaderFile
0017 #define _OpenGl_GraphicDriver_HeaderFile
0018
0019 #include <Graphic3d_GraphicDriver.hxx>
0020
0021 #include <Aspect_DisplayConnection.hxx>
0022 #include <Graphic3d_CView.hxx>
0023 #include <Graphic3d_CStructure.hxx>
0024 #include <NCollection_DataMap.hxx>
0025 #include <OpenGl_Context.hxx>
0026
0027 class Aspect_Window;
0028 class OpenGl_Structure;
0029 class OpenGl_View;
0030 class OpenGl_Window;
0031
0032
0033
0034 class OpenGl_StateCounter
0035 {
0036 public:
0037 OpenGl_StateCounter()
0038 : myCounter(0)
0039 {
0040 }
0041
0042 size_t Increment() { return ++myCounter; }
0043
0044 private:
0045 size_t myCounter;
0046 };
0047
0048
0049 class OpenGl_GraphicDriver : public Graphic3d_GraphicDriver
0050 {
0051 DEFINE_STANDARD_RTTIEXT(OpenGl_GraphicDriver, Graphic3d_GraphicDriver)
0052 public:
0053
0054
0055
0056 Standard_EXPORT OpenGl_GraphicDriver(const occ::handle<Aspect_DisplayConnection>& theDisp,
0057 const bool theToInitialize = true);
0058
0059
0060 Standard_EXPORT ~OpenGl_GraphicDriver() override;
0061
0062
0063 Standard_EXPORT void ReleaseContext();
0064
0065
0066 Standard_EXPORT bool InitContext();
0067
0068
0069
0070
0071
0072 Standard_EXPORT bool InitEglContext(Aspect_Display theEglDisplay,
0073 Aspect_RenderingContext theEglContext,
0074 void* theEglConfig);
0075
0076
0077 Standard_EXPORT int InquireLimit(const Graphic3d_TypeOfLimit theType) const override;
0078
0079 public:
0080 Standard_EXPORT occ::handle<Graphic3d_CStructure> CreateStructure(
0081 const occ::handle<Graphic3d_StructureManager>& theManager) override;
0082
0083 Standard_EXPORT void RemoveStructure(occ::handle<Graphic3d_CStructure>& theCStructure) override;
0084
0085 Standard_EXPORT occ::handle<Graphic3d_CView> CreateView(
0086 const occ::handle<Graphic3d_StructureManager>& theMgr) override;
0087
0088 Standard_EXPORT void RemoveView(const occ::handle<Graphic3d_CView>& theView) override;
0089
0090
0091
0092
0093
0094 Standard_EXPORT virtual occ::handle<OpenGl_Window> CreateRenderWindow(
0095 const occ::handle<Aspect_Window>& theNativeWindow,
0096 const occ::handle<Aspect_Window>& theSizeWindow,
0097 const Aspect_RenderingContext theContext);
0098
0099 public:
0100 Standard_EXPORT void TextSize(const occ::handle<Graphic3d_CView>& theView,
0101 const char* const theText,
0102 const float theHeight,
0103 float& theWidth,
0104 float& theAscent,
0105 float& theDescent) const override;
0106
0107 Standard_EXPORT float DefaultTextHeight() const override;
0108
0109 Standard_EXPORT bool ViewExists(const occ::handle<Aspect_Window>& theWindow,
0110 occ::handle<Graphic3d_CView>& theView) override;
0111
0112 public:
0113
0114
0115
0116
0117
0118 Standard_EXPORT void InsertLayerBefore(const Graphic3d_ZLayerId theNewLayerId,
0119 const Graphic3d_ZLayerSettings& theSettings,
0120 const Graphic3d_ZLayerId theLayerAfter) override;
0121
0122
0123
0124
0125
0126 Standard_EXPORT void InsertLayerAfter(const Graphic3d_ZLayerId theNewLayerId,
0127 const Graphic3d_ZLayerSettings& theSettings,
0128 const Graphic3d_ZLayerId theLayerBefore) override;
0129
0130
0131
0132
0133
0134 Standard_EXPORT void RemoveZLayer(const Graphic3d_ZLayerId theLayerId) override;
0135
0136
0137 Standard_EXPORT void SetZLayerSettings(const Graphic3d_ZLayerId theLayerId,
0138 const Graphic3d_ZLayerSettings& theSettings) override;
0139
0140 public:
0141
0142 inline const OpenGl_Caps& Options() const { return *myCaps.operator->(); }
0143
0144
0145 inline OpenGl_Caps& ChangeOptions() { return *myCaps.operator->(); }
0146
0147
0148 Standard_EXPORT void SetBuffersNoSwap(const bool theIsNoSwap);
0149
0150
0151
0152
0153 Standard_EXPORT void EnableVBO(const bool theToTurnOn) override;
0154
0155
0156
0157 Standard_EXPORT bool IsVerticalSync() const override;
0158
0159
0160 Standard_EXPORT void SetVerticalSync(bool theToEnable) override;
0161
0162
0163
0164 Standard_EXPORT bool MemoryInfo(size_t& theFreeBytes,
0165 TCollection_AsciiString& theInfo) const override;
0166
0167 public:
0168
0169
0170
0171
0172 Standard_EXPORT const occ::handle<OpenGl_Context>& GetSharedContext(bool theBound = false) const;
0173
0174 Aspect_Display getRawGlDisplay() const { return myEglDisplay; }
0175
0176 Aspect_RenderingContext getRawGlContext() const { return myEglContext; }
0177
0178 void* getRawGlConfig() const { return myEglConfig; }
0179
0180
0181 Standard_EXPORT void setDeviceLost();
0182
0183 public:
0184
0185 OpenGl_StateCounter* GetStateCounter() const { return &myStateCounter; }
0186
0187
0188 size_t GetNextPrimitiveArrayUID() const { return myUIDGenerator.Increment(); }
0189
0190 protected:
0191
0192 Standard_EXPORT void chooseVisualInfo();
0193
0194 protected:
0195
0196 bool myIsOwnContext;
0197
0198
0199 Aspect_Display myEglDisplay;
0200 Aspect_RenderingContext myEglContext;
0201 void* myEglConfig;
0202
0203 occ::handle<OpenGl_Caps> myCaps;
0204 NCollection_Map<occ::handle<OpenGl_View>> myMapOfView;
0205 NCollection_DataMap<int, OpenGl_Structure*> myMapOfStructure;
0206
0207 mutable OpenGl_StateCounter myStateCounter;
0208 mutable OpenGl_StateCounter myUIDGenerator;
0209 };
0210
0211 #endif