| VRS - The Virtual Rendering System |
| version 3.3 |
00001 /********************************************************************** 00002 VRS - The Virtual Rendering System 00003 Copyright (C) 2001 Computer Graphics Systems Group at the 00004 Hasso-Plattner-Institute, Potsdam, Germany. 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 This library is distributed in the hope that it will be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 See the GNU Lesser General Public License for more details. 00013 You should have received a copy of the GNU Lesser+ General Public 00014 License along with this library; if not, write to the FreeSoftware 00015 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA. 00016 **********************************************************************/ 00017 // $Id: framecounter.h 6332 2008-05-09 13:29:10Z Silvio_Moelter $ 00018 // $Date: 2008-05-09 15:29:10 +0200 (Fri, 09 May 2008) $ 00019 // $Revision: 6332 $ 00020 // $State$ 00021 // $Author: Silvio_Moelter $ 00022 // 00023 // $Log$ 00024 // Revision 1.15 2005/01/03 01:43:10 klimetschek 00025 // - modified win32 project layout, splitted vrs.vcproj into vrs_container, vrs_core, vrs_sg, vrs_image, vrs_opengl and vrs_io 00026 // - removed vrs.vcproj 00027 // minor things: 00028 // - added all glutexamples to vrs4glut.sln 00029 // - fixed some problems in glutexamples 00030 // - removed all project references from all VS projects (using solution wide project dependencies instead) 00031 // 00032 // Revision 1.14 2004/10/28 14:16:01 basch 00033 // Class comment changed (Doxygen style) 00034 // 00035 // Revision 1.13 2004/03/12 16:28:41 baumann 00036 // macros VRS_NAMESPACE_BEGIN/_END expanded and removed 00037 // 00038 // Revision 1.12 2004/02/16 16:42:08 baumann 00039 // - moved class VRS::SceneNode from "vrs/sg/" to "vrs/" 00040 // - renamed class VRS::SceneGraphVisitor to class VRS::SceneNodeVisitor 00041 // and moved it from "vrs/sg/" to "vrs/" 00042 // 00043 // Revision 1.11 2004/01/19 11:43:58 baumann 00044 // serialization mechanism improved 00045 // 00046 // Revision 1.10 2003/11/07 14:19:25 kirsch 00047 // removed leading underscore from include guards 00048 // 00049 // Revision 1.9 2002/10/29 10:32:53 baumann 00050 // macros VRS_CLASSNAME_* and VRS_IMPL_TYPEINFO_* removed 00051 // 00052 // Revision 1.8 2002/04/25 19:23:03 rozinat 00053 // persistency added: VRS_SERIALIZABLE-macro added 00054 // 00055 // Revision 1.7 2002/03/03 21:44:26 kosta 00056 // VRS_TYPEINFO-macro rewritten 00057 // 00058 // Revision 1.6 2002/02/19 10:34:20 kosta 00059 // undone all changes since 2002-02-15 00060 // 00061 // Revision 1.3 2002/01/15 16:25:55 kosta 00062 // macros rewritten for a better namespace support 00063 // 00064 // Revision 1.2 2001/11/13 16:36:31 kirsch 00065 // changed line feed to unix style (removed control-M) 00066 // 00067 // Revision 1.1 2001/09/07 11:44:01 kersting 00068 // initial version 00069 // 00070 00071 #ifndef VRS_FRAMECOUNTER_H 00072 #define VRS_FRAMECOUNTER_H 00073 00074 #include <vrs/scenenode.h> 00075 #include <vrs/sg/clock.h> 00076 00077 namespace VRS { 00078 00079 class VRS_CORE_API FrameCounter : public SceneNode { 00080 00081 public: 00082 00083 FrameCounter(bool onlyFrames = true); 00087 virtual void evaluate(Engine* engine); 00088 00089 double framerate(); 00090 //. returns the number of frames per second since last call 00091 00092 double currentFramerate(int numAvgValues = 20); 00093 //. returns the current number of fps, averaged through the last 'numAvgValues' frames 00094 00095 VRS_TYPEINFO(FrameCounter, SceneNode); 00096 VRS_SERIALIZABLE(FrameCounter); 00097 00098 private: 00099 bool onlyFrames_; 00100 int counter_; 00101 00102 double ringBuffer_[100]; 00103 int rbIndex_; 00104 }; 00105 00106 } // namespace VRS 00107 00108 #endif // VRS_FRAMECOUNTER_H