File indexing completed on 2025-01-18 10:04:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef _OpenGl_Aspects_Header
0015 #define _OpenGl_Aspects_Header
0016
0017 #include <OpenGl_Element.hxx>
0018 #include <OpenGl_AspectsProgram.hxx>
0019 #include <OpenGl_AspectsTextureSet.hxx>
0020 #include <OpenGl_AspectsSprite.hxx>
0021 #include <Graphic3d_Aspects.hxx>
0022
0023
0024 class OpenGl_Aspects : public OpenGl_Element
0025 {
0026 public:
0027
0028
0029 Standard_EXPORT OpenGl_Aspects();
0030
0031
0032 Standard_EXPORT OpenGl_Aspects (const Handle(Graphic3d_Aspects)& theAspect);
0033
0034
0035 const Handle(Graphic3d_Aspects)& Aspect() const { return myAspect; }
0036
0037
0038 Standard_EXPORT void SetAspect (const Handle(Graphic3d_Aspects)& theAspect);
0039
0040
0041 Graphic3d_TypeOfShadingModel ShadingModel() const { return myShadingModel; }
0042
0043
0044 void SetNoLighting() { myShadingModel = Graphic3d_TypeOfShadingModel_Unlit; }
0045
0046
0047 const Handle(OpenGl_TextureSet)& TextureSet (const Handle(OpenGl_Context)& theCtx,
0048 bool theToHighlight = false) const
0049 {
0050 const Handle(OpenGl_PointSprite)& aSprite = myResSprite.Sprite (theCtx, myAspect, false);
0051 const Handle(OpenGl_PointSprite)& aSpriteA = myResSprite.Sprite (theCtx, myAspect, true);
0052 return myResTextureSet.TextureSet (theCtx, myAspect, aSprite, aSpriteA, theToHighlight);
0053 }
0054
0055
0056
0057 const Handle(OpenGl_ShaderProgram)& ShaderProgramRes (const Handle(OpenGl_Context)& theCtx) const
0058 {
0059 return myResProgram.ShaderProgram (theCtx, myAspect->ShaderProgram());
0060 }
0061
0062
0063 Standard_ShortReal MarkerSize() const { return myResSprite.MarkerSize(); }
0064
0065
0066 bool HasPointSprite (const Handle(OpenGl_Context)& theCtx) const
0067 {
0068 return myResSprite.HasPointSprite (theCtx, myAspect);
0069 }
0070
0071
0072 bool IsDisplayListSprite (const Handle(OpenGl_Context)& theCtx) const
0073 {
0074 return myResSprite.IsDisplayListSprite (theCtx, myAspect);
0075 }
0076
0077
0078
0079 const Handle(OpenGl_PointSprite)& SpriteRes (const Handle(OpenGl_Context)& theCtx,
0080 bool theIsAlphaSprite) const
0081 {
0082 return myResSprite.Sprite (theCtx, myAspect, theIsAlphaSprite);
0083 }
0084
0085 Standard_EXPORT virtual void Render (const Handle(OpenGl_Workspace)& theWorkspace) const Standard_OVERRIDE;
0086 Standard_EXPORT virtual void Release (OpenGl_Context* theContext) Standard_OVERRIDE;
0087
0088
0089 virtual void SynchronizeAspects() Standard_OVERRIDE { SetAspect (myAspect); }
0090
0091
0092 Standard_EXPORT void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE;
0093
0094 protected:
0095
0096
0097 mutable OpenGl_AspectsProgram myResProgram;
0098 mutable OpenGl_AspectsTextureSet myResTextureSet;
0099 mutable OpenGl_AspectsSprite myResSprite;
0100
0101 Handle(Graphic3d_Aspects) myAspect;
0102 Graphic3d_TypeOfShadingModel myShadingModel;
0103
0104 public:
0105
0106 DEFINE_STANDARD_ALLOC
0107
0108 };
0109
0110 #endif