mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0024867: Visualization - polygon offsets look broken
If specific layer setting is not enabled, default value extracted from current OpenGl state will be used.
This commit is contained in:
parent
c34795d6ff
commit
aa125c5ae6
@ -44,7 +44,6 @@ namespace
|
|||||||
{{ 1.0F, 1.0F, 1.0F, 1.0F }} // material color
|
{{ 1.0F, 1.0F, 1.0F, 1.0F }} // material color
|
||||||
};
|
};
|
||||||
|
|
||||||
static TEL_POFFSET_PARAM THE_DEFAULT_POFFSET = { Aspect_POM_Fill, 1.0F, 0.0F };
|
|
||||||
static const TCollection_AsciiString THE_EMPTY_KEY;
|
static const TCollection_AsciiString THE_EMPTY_KEY;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include <InterfaceGraphic_telem.hxx>
|
#include <InterfaceGraphic_telem.hxx>
|
||||||
#include <Aspect_InteriorStyle.hxx>
|
#include <Aspect_InteriorStyle.hxx>
|
||||||
|
#include <Aspect_PolygonOffsetMode.hxx>
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
|
|
||||||
#include <Handle_Graphic3d_TextureParams.hxx>
|
#include <Handle_Graphic3d_TextureParams.hxx>
|
||||||
@ -35,6 +36,8 @@
|
|||||||
#define OPENGL_SPECULAR_MASK (1<<2)
|
#define OPENGL_SPECULAR_MASK (1<<2)
|
||||||
#define OPENGL_EMISSIVE_MASK (1<<3)
|
#define OPENGL_EMISSIVE_MASK (1<<3)
|
||||||
|
|
||||||
|
static const TEL_POFFSET_PARAM THE_DEFAULT_POFFSET = { Aspect_POM_Fill, 1.0F, 0.0F };
|
||||||
|
|
||||||
class CALL_DEF_CONTEXTFILLAREA;
|
class CALL_DEF_CONTEXTFILLAREA;
|
||||||
|
|
||||||
struct OPENGL_SURF_PROP
|
struct OPENGL_SURF_PROP
|
||||||
|
@ -14,23 +14,9 @@
|
|||||||
// commercial license or contractual agreement.
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
#include <OpenGl_Layer.hxx>
|
#include <OpenGl_Layer.hxx>
|
||||||
|
#include <OpenGl_Workspace.hxx>
|
||||||
#include <OpenGl_GlCore11.hxx>
|
#include <OpenGl_GlCore11.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : OpenGl_LayerSettings
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
OpenGl_LayerSettings::OpenGl_LayerSettings()
|
|
||||||
: DepthOffsetFactor (1.0f),
|
|
||||||
DepthOffsetUnits (1.0f),
|
|
||||||
Flags (OpenGl_LayerDepthTest
|
|
||||||
| OpenGl_LayerDepthWrite
|
|
||||||
| OpenGl_LayerDepthClear)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : OpenGl_Layer
|
//function : OpenGl_Layer
|
||||||
//purpose :
|
//purpose :
|
||||||
@ -45,18 +31,21 @@ OpenGl_Layer::OpenGl_Layer (const Standard_Integer theNbPriorities)
|
|||||||
//function : Render
|
//function : Render
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void OpenGl_Layer::Render (const Handle(OpenGl_Workspace) &AWorkspace) const
|
void OpenGl_Layer::Render (const Handle(OpenGl_Workspace) &theWorkspace, const OpenGl_GlobalLayerSettings& theDefaultSettings) const
|
||||||
{
|
{
|
||||||
|
TEL_POFFSET_PARAM anAppliedOffsetParams = theWorkspace->AppliedPolygonOffset();
|
||||||
|
|
||||||
// separate depth buffers
|
// separate depth buffers
|
||||||
if (IsSettingEnabled (OpenGl_LayerDepthClear))
|
if (IsSettingEnabled (Graphic3d_ZLayerDepthClear))
|
||||||
{
|
{
|
||||||
glClear (GL_DEPTH_BUFFER_BIT);
|
glClear (GL_DEPTH_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle depth test
|
// handle depth test
|
||||||
if (IsSettingEnabled (OpenGl_LayerDepthTest))
|
if (IsSettingEnabled (Graphic3d_ZLayerDepthTest))
|
||||||
{
|
{
|
||||||
glDepthFunc (GL_LESS);
|
// assuming depth test is enabled by default
|
||||||
|
glDepthFunc (theDefaultSettings.DepthFunc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -64,17 +53,21 @@ void OpenGl_Layer::Render (const Handle(OpenGl_Workspace) &AWorkspace) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// handle depth offset
|
// handle depth offset
|
||||||
if (IsSettingEnabled (OpenGl_LayerDepthOffset))
|
if (IsSettingEnabled (Graphic3d_ZLayerDepthOffset))
|
||||||
{
|
{
|
||||||
glPolygonOffset (myLayerSettings.DepthOffsetFactor, myLayerSettings.DepthOffsetUnits);
|
theWorkspace->SetPolygonOffset (Aspect_POM_Fill,
|
||||||
|
myLayerSettings.DepthOffsetFactor,
|
||||||
|
myLayerSettings.DepthOffsetUnits);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glPolygonOffset (0.f, 0.f);
|
theWorkspace->SetPolygonOffset (anAppliedOffsetParams.mode,
|
||||||
|
anAppliedOffsetParams.factor,
|
||||||
|
anAppliedOffsetParams.units);
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle depth write
|
// handle depth write
|
||||||
if (IsSettingEnabled (OpenGl_LayerDepthWrite))
|
if (IsSettingEnabled (Graphic3d_ZLayerDepthWrite))
|
||||||
{
|
{
|
||||||
glDepthMask (GL_TRUE);
|
glDepthMask (GL_TRUE);
|
||||||
}
|
}
|
||||||
@ -84,5 +77,10 @@ void OpenGl_Layer::Render (const Handle(OpenGl_Workspace) &AWorkspace) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// render priority list
|
// render priority list
|
||||||
myPriorityList.Render (AWorkspace);
|
myPriorityList.Render (theWorkspace);
|
||||||
|
|
||||||
|
// always restore polygon offset between layers rendering
|
||||||
|
theWorkspace->SetPolygonOffset (anAppliedOffsetParams.mode,
|
||||||
|
anAppliedOffsetParams.factor,
|
||||||
|
anAppliedOffsetParams.units);
|
||||||
}
|
}
|
||||||
|
@ -17,32 +17,15 @@
|
|||||||
#define _OpenGl_Layer_Header
|
#define _OpenGl_Layer_Header
|
||||||
|
|
||||||
#include <OpenGl_PriorityList.hxx>
|
#include <OpenGl_PriorityList.hxx>
|
||||||
|
#include <Graphic3d_ZLayerSettings.hxx>
|
||||||
|
#include <OpenGl_GlCore11.hxx>
|
||||||
|
|
||||||
class Handle(OpenGl_Workspace);
|
class Handle(OpenGl_Workspace);
|
||||||
|
|
||||||
enum OpenGl_LayerSetting
|
struct OpenGl_GlobalLayerSettings
|
||||||
{
|
{
|
||||||
OpenGl_LayerDepthTest = 1,
|
GLint DepthFunc;
|
||||||
OpenGl_LayerDepthWrite = 2,
|
GLboolean DepthMask;
|
||||||
OpenGl_LayerDepthClear = 4,
|
|
||||||
OpenGl_LayerDepthOffset = 8
|
|
||||||
};
|
|
||||||
|
|
||||||
struct OpenGl_LayerSettings
|
|
||||||
{
|
|
||||||
//! Initializes settings
|
|
||||||
OpenGl_LayerSettings();
|
|
||||||
|
|
||||||
//! Returns true if theSetting is enabled.
|
|
||||||
const Standard_Boolean IsSettingEnabled (const OpenGl_LayerSetting theSetting) const
|
|
||||||
{
|
|
||||||
return (Flags & theSetting) == theSetting;
|
|
||||||
}
|
|
||||||
|
|
||||||
Standard_ShortReal DepthOffsetFactor; //!< Factor argument value for OpenGl glPolygonOffset function.
|
|
||||||
Standard_ShortReal DepthOffsetUnits; //!< Units argument value for OpenGl glPolygonOffset function.
|
|
||||||
|
|
||||||
Standard_Integer Flags; //!< Storage field for settings.
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class OpenGl_Layer
|
class OpenGl_Layer
|
||||||
@ -53,16 +36,16 @@ public:
|
|||||||
OpenGl_Layer (const Standard_Integer theNbPriorities = 11);
|
OpenGl_Layer (const Standard_Integer theNbPriorities = 11);
|
||||||
|
|
||||||
//! Returns settings of the layer object.
|
//! Returns settings of the layer object.
|
||||||
const OpenGl_LayerSettings LayerSettings() const { return myLayerSettings; };
|
const Graphic3d_ZLayerSettings LayerSettings() const { return myLayerSettings; };
|
||||||
|
|
||||||
//! Sets settings of the layer object.
|
//! Sets settings of the layer object.
|
||||||
void SetLayerSettings (OpenGl_LayerSettings theSettings)
|
void SetLayerSettings (Graphic3d_ZLayerSettings theSettings)
|
||||||
{
|
{
|
||||||
myLayerSettings = theSettings;
|
myLayerSettings = theSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns true if theSetting is enabled for the layer.
|
//! Returns true if theSetting is enabled for the layer.
|
||||||
const Standard_Boolean IsSettingEnabled (const OpenGl_LayerSetting theSetting) const
|
const Standard_Boolean IsSettingEnabled (const Graphic3d_ZLayerSetting theSetting) const
|
||||||
{
|
{
|
||||||
return myLayerSettings.IsSettingEnabled (theSetting);
|
return myLayerSettings.IsSettingEnabled (theSetting);
|
||||||
}
|
}
|
||||||
@ -73,12 +56,12 @@ public:
|
|||||||
//! Returns const reference to associated priority list.
|
//! Returns const reference to associated priority list.
|
||||||
const OpenGl_PriorityList& PriorityList() const { return myPriorityList; }
|
const OpenGl_PriorityList& PriorityList() const { return myPriorityList; }
|
||||||
|
|
||||||
void Render (const Handle(OpenGl_Workspace) &AWorkspace) const;
|
void Render (const Handle(OpenGl_Workspace) &AWorkspace, const OpenGl_GlobalLayerSettings& theDefaultSettings) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
OpenGl_PriorityList myPriorityList; //!< Associated priority list object.
|
OpenGl_PriorityList myPriorityList; //!< Associated priority list object.
|
||||||
|
|
||||||
OpenGl_LayerSettings myLayerSettings; //!< Layer setting flags.
|
Graphic3d_ZLayerSettings myLayerSettings; //!< Layer setting flags.
|
||||||
};
|
};
|
||||||
#endif //_OpenGl_Layer_Header
|
#endif //_OpenGl_Layer_Header
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <OpenGl_LayerList.hxx>
|
#include <OpenGl_LayerList.hxx>
|
||||||
#include <OpenGl_Structure.hxx>
|
#include <OpenGl_Structure.hxx>
|
||||||
|
#include <OpenGl_Workspace.hxx>
|
||||||
|
|
||||||
#include <InterfaceGraphic_Graphic3d.hxx>
|
#include <InterfaceGraphic_Graphic3d.hxx>
|
||||||
#include <InterfaceGraphic.hxx>
|
#include <InterfaceGraphic.hxx>
|
||||||
@ -279,14 +280,22 @@ void OpenGl_LayerList::ChangeLayer (const OpenGl_Structure *theStructure,
|
|||||||
|
|
||||||
void OpenGl_LayerList::Render (const Handle(OpenGl_Workspace) &theWorkspace) const
|
void OpenGl_LayerList::Render (const Handle(OpenGl_Workspace) &theWorkspace) const
|
||||||
{
|
{
|
||||||
|
OpenGl_GlobalLayerSettings aDefaultSettings;
|
||||||
|
|
||||||
|
glGetIntegerv (GL_DEPTH_FUNC, &aDefaultSettings.DepthFunc);
|
||||||
|
glGetBooleanv (GL_DEPTH_WRITEMASK, &aDefaultSettings.DepthMask);
|
||||||
|
|
||||||
OpenGl_SequenceOfLayers::Iterator anIts;
|
OpenGl_SequenceOfLayers::Iterator anIts;
|
||||||
for(anIts.Init (myLayers); anIts.More (); anIts.Next ())
|
for (anIts.Init (myLayers); anIts.More(); anIts.Next())
|
||||||
{
|
{
|
||||||
const OpenGl_Layer& aLayer = anIts.Value ();
|
const OpenGl_Layer& aLayer = anIts.Value ();
|
||||||
if (aLayer.PriorityList().NbStructures () > 0)
|
if (aLayer.PriorityList().NbStructures () > 0)
|
||||||
{
|
{
|
||||||
// render layer
|
// render layer
|
||||||
aLayer.Render (theWorkspace);
|
aLayer.Render (theWorkspace, aDefaultSettings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glDepthMask (aDefaultSettings.DepthMask);
|
||||||
|
glDepthFunc (aDefaultSettings.DepthFunc);
|
||||||
}
|
}
|
||||||
|
@ -1518,13 +1518,6 @@ void OpenGl_View::ChangeZLayer (const OpenGl_Structure *theStructure,
|
|||||||
void OpenGl_View::SetZLayerSettings (const Standard_Integer theLayerId,
|
void OpenGl_View::SetZLayerSettings (const Standard_Integer theLayerId,
|
||||||
const Graphic3d_ZLayerSettings theSettings)
|
const Graphic3d_ZLayerSettings theSettings)
|
||||||
{
|
{
|
||||||
// Convert Graphic3d_ZLayerSettings to OpenGl_LayerSettings
|
myZLayers.Layer (theLayerId).SetLayerSettings (theSettings);
|
||||||
OpenGl_LayerSettings aConvertedSettings;
|
|
||||||
|
|
||||||
aConvertedSettings.DepthOffsetFactor = theSettings.DepthOffsetFactor;
|
|
||||||
aConvertedSettings.DepthOffsetUnits = theSettings.DepthOffsetUnits;
|
|
||||||
aConvertedSettings.Flags = theSettings.Flags;
|
|
||||||
|
|
||||||
myZLayers.Layer (theLayerId).SetLayerSettings (aConvertedSettings);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,8 +166,8 @@ OpenGl_Workspace::OpenGl_Workspace (const Handle(OpenGl_Display)& theDisplay,
|
|||||||
TextParam_applied (NULL),
|
TextParam_applied (NULL),
|
||||||
ViewMatrix_applied (&myDefaultMatrix),
|
ViewMatrix_applied (&myDefaultMatrix),
|
||||||
StructureMatrix_applied (&myDefaultMatrix),
|
StructureMatrix_applied (&myDefaultMatrix),
|
||||||
myModelViewMatrix (myDefaultMatrix),
|
PolygonOffset_applied (THE_DEFAULT_POFFSET),
|
||||||
PolygonOffset_applied (NULL)
|
myModelViewMatrix (myDefaultMatrix)
|
||||||
{
|
{
|
||||||
theDisplay->InitAttributes();
|
theDisplay->InitAttributes();
|
||||||
|
|
||||||
@ -268,7 +268,7 @@ void OpenGl_Workspace::ResetAppliedAspect()
|
|||||||
AspectText_applied = NULL;
|
AspectText_applied = NULL;
|
||||||
TextParam_set = &myDefaultTextParam;
|
TextParam_set = &myDefaultTextParam;
|
||||||
TextParam_applied = NULL;
|
TextParam_applied = NULL;
|
||||||
PolygonOffset_applied = NULL;
|
PolygonOffset_applied = THE_DEFAULT_POFFSET;
|
||||||
|
|
||||||
AspectLine(Standard_True);
|
AspectLine(Standard_True);
|
||||||
AspectFace(Standard_True);
|
AspectFace(Standard_True);
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <Aspect_CLayer2d.hxx>
|
#include <Aspect_CLayer2d.hxx>
|
||||||
#include <Aspect_Handle.hxx>
|
#include <Aspect_Handle.hxx>
|
||||||
#include <Aspect_PrintAlgo.hxx>
|
#include <Aspect_PrintAlgo.hxx>
|
||||||
|
#include <Aspect_PolygonOffsetMode.hxx>
|
||||||
|
|
||||||
#include <InterfaceGraphic_Graphic3d.hxx>
|
#include <InterfaceGraphic_Graphic3d.hxx>
|
||||||
#include <InterfaceGraphic_Visual3d.hxx>
|
#include <InterfaceGraphic_Visual3d.hxx>
|
||||||
@ -227,6 +228,12 @@ public:
|
|||||||
//! @return applied model structure matrix.
|
//! @return applied model structure matrix.
|
||||||
inline const OpenGl_Matrix* ModelMatrix() const { return StructureMatrix_applied; }
|
inline const OpenGl_Matrix* ModelMatrix() const { return StructureMatrix_applied; }
|
||||||
|
|
||||||
|
//! Sets and applies current polygon offset.
|
||||||
|
void SetPolygonOffset (int theMode, Standard_ShortReal theFactor, Standard_ShortReal theUnits);
|
||||||
|
|
||||||
|
//! Returns currently applied polygon offset params.
|
||||||
|
const TEL_POFFSET_PARAM& AppliedPolygonOffset() { return PolygonOffset_applied; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void CopyBuffers (const Standard_Boolean theFrontToBack);
|
void CopyBuffers (const Standard_Boolean theFrontToBack);
|
||||||
@ -443,12 +450,11 @@ protected: //! @name fields related to status
|
|||||||
OpenGl_Material myMatBack; //!< current back material state
|
OpenGl_Material myMatBack; //!< current back material state
|
||||||
OpenGl_Material myMatTmp; //!< temporary variable
|
OpenGl_Material myMatTmp; //!< temporary variable
|
||||||
|
|
||||||
//! Model matrix with applied structure transformations
|
OpenGl_Matrix myModelViewMatrix; //!< Model matrix with applied structure transformations
|
||||||
OpenGl_Matrix myModelViewMatrix;
|
|
||||||
|
|
||||||
const TEL_POFFSET_PARAM* PolygonOffset_applied;
|
TEL_POFFSET_PARAM PolygonOffset_applied; //!< Currently applied polygon offset.
|
||||||
|
|
||||||
OpenGl_AspectFace myAspectFaceHl; // Hiddenline aspect
|
OpenGl_AspectFace myAspectFaceHl; //!< Hiddenline aspect
|
||||||
|
|
||||||
public: //! @name type definition
|
public: //! @name type definition
|
||||||
|
|
||||||
|
@ -44,24 +44,36 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
static void TelUpdatePolygonOffsets( const TEL_POFFSET_PARAM *pdata )
|
static void TelUpdatePolygonOffsets (const TEL_POFFSET_PARAM& theOffsetData)
|
||||||
{
|
{
|
||||||
if ( ( pdata->mode & Aspect_POM_Fill ) == Aspect_POM_Fill )
|
if ((theOffsetData.mode & Aspect_POM_Fill) == Aspect_POM_Fill)
|
||||||
glEnable ( GL_POLYGON_OFFSET_FILL );
|
{
|
||||||
|
glEnable (GL_POLYGON_OFFSET_FILL);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
glDisable ( GL_POLYGON_OFFSET_FILL );
|
{
|
||||||
|
glDisable (GL_POLYGON_OFFSET_FILL);
|
||||||
|
}
|
||||||
|
|
||||||
if ( ( pdata->mode & Aspect_POM_Line ) == Aspect_POM_Line )
|
if ((theOffsetData.mode & Aspect_POM_Line) == Aspect_POM_Line)
|
||||||
glEnable ( GL_POLYGON_OFFSET_LINE );
|
{
|
||||||
|
glEnable (GL_POLYGON_OFFSET_LINE);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
glDisable( GL_POLYGON_OFFSET_LINE );
|
{
|
||||||
|
glDisable (GL_POLYGON_OFFSET_LINE);
|
||||||
|
}
|
||||||
|
|
||||||
if ( ( pdata->mode & Aspect_POM_Point ) == Aspect_POM_Point )
|
if ((theOffsetData.mode & Aspect_POM_Point) == Aspect_POM_Point)
|
||||||
glEnable ( GL_POLYGON_OFFSET_POINT );
|
{
|
||||||
|
glEnable (GL_POLYGON_OFFSET_POINT);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
glDisable( GL_POLYGON_OFFSET_POINT );
|
{
|
||||||
|
glDisable (GL_POLYGON_OFFSET_POINT);
|
||||||
|
}
|
||||||
|
|
||||||
glPolygonOffset( pdata->factor, pdata->units );
|
glPolygonOffset (theOffsetData.factor, theOffsetData.units);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
@ -396,13 +408,13 @@ const OpenGl_AspectFace* OpenGl_Workspace::AspectFace (const Standard_Boolean th
|
|||||||
// Aspect_POM_None means: do not change current settings
|
// Aspect_POM_None means: do not change current settings
|
||||||
if ((AspectFace_set->PolygonOffset().mode & Aspect_POM_None) != Aspect_POM_None)
|
if ((AspectFace_set->PolygonOffset().mode & Aspect_POM_None) != Aspect_POM_None)
|
||||||
{
|
{
|
||||||
if (PolygonOffset_applied == NULL
|
if (PolygonOffset_applied.mode != AspectFace_set->PolygonOffset().mode
|
||||||
|| PolygonOffset_applied->mode != AspectFace_set->PolygonOffset().mode
|
|| PolygonOffset_applied.factor != AspectFace_set->PolygonOffset().factor
|
||||||
|| PolygonOffset_applied->factor != AspectFace_set->PolygonOffset().factor
|
|| PolygonOffset_applied.units != AspectFace_set->PolygonOffset().units)
|
||||||
|| PolygonOffset_applied->units != AspectFace_set->PolygonOffset().units)
|
|
||||||
{
|
{
|
||||||
PolygonOffset_applied = &AspectFace_set->PolygonOffset();
|
SetPolygonOffset (AspectFace_set->PolygonOffset().mode,
|
||||||
TelUpdatePolygonOffsets (PolygonOffset_applied);
|
AspectFace_set->PolygonOffset().factor,
|
||||||
|
AspectFace_set->PolygonOffset().units);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,6 +441,21 @@ const OpenGl_AspectFace* OpenGl_Workspace::AspectFace (const Standard_Boolean th
|
|||||||
return AspectFace_set;
|
return AspectFace_set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : SetPolygonOffset
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
void OpenGl_Workspace::SetPolygonOffset (int theMode,
|
||||||
|
Standard_ShortReal theFactor,
|
||||||
|
Standard_ShortReal theUnits)
|
||||||
|
{
|
||||||
|
PolygonOffset_applied.mode = theMode;
|
||||||
|
PolygonOffset_applied.factor = theFactor;
|
||||||
|
PolygonOffset_applied.units = theUnits;
|
||||||
|
|
||||||
|
TelUpdatePolygonOffsets (PolygonOffset_applied);
|
||||||
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
const OpenGl_AspectMarker* OpenGl_Workspace::AspectMarker (const Standard_Boolean theToApply)
|
const OpenGl_AspectMarker* OpenGl_Workspace::AspectMarker (const Standard_Boolean theToApply)
|
||||||
|
20
tests/bugs/vis/bug24867
Normal file
20
tests/bugs/vis/bug24867
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
puts "============"
|
||||||
|
puts "CR24867"
|
||||||
|
puts "============"
|
||||||
|
puts ""
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Test for displaying highlighted representation of a complex shape
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
restore [locate_data_file Bottom.brep] obj
|
||||||
|
vinit
|
||||||
|
vdisplay obj
|
||||||
|
vsetdispmode 1
|
||||||
|
vfit
|
||||||
|
|
||||||
|
vmoveto 235 213
|
||||||
|
vdump $imagedir/${casename}_highlighted.png
|
||||||
|
|
||||||
|
vselect 235 213
|
||||||
|
vdump $imagedir/${casename}_selected.png
|
Loading…
x
Reference in New Issue
Block a user