// @(#)root/gl:$Id$ // Author: Timur Pocheptsov 03/08/2004 // NOTE: This code moved from obsoleted TGLSceneObject.h / .cxx - see these // attic files for previous CVS history /************************************************************************* * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TGLCylinder #define ROOT_TGLCylinder #include "TGLLogicalShape.h" class TBuffer3DTube; class TGLCylinder : public TGLLogicalShape { private: Double_t fR1, fR2, fR3, fR4; Double_t fDz; Double_t fPhi1, fPhi2; TGLVector3 fLowPlaneNorm, fHighPlaneNorm; Bool_t fSegMesh; public: TGLCylinder(const TBuffer3DTube & buffer); ~TGLCylinder() override; UInt_t DLOffset(Short_t lod) const override; // Cylinders support LOD (tesselation quality) adjustment along // X/Y axes (round the cylinder radius), but not along length (Z) ELODAxes SupportedLODAxes() const override { // return ELODAxes(kLODAxesX | kLODAxesY); // MT 2020-06-05: There seems to be a problem with TGLPhysicalShape::CalculateShapeLOD() // and LOD is set to Pixel way too early. Resetting this to kLODAxesAll. return ELODAxes(kLODAxesAll); } Short_t QuantizeShapeLOD(Short_t shapeLOD, Short_t combiLOD) const override; void DirectDraw(TGLRnrCtx & rnrCtx) const override; private: ClassDefOverride(TGLCylinder,0); // a cylinderical logical shape }; #endif