Commit 1fa2ba2b authored by cutealien's avatar cutealien

Add a code profiler (stop-watch style).

- breaks MacOSX build for now (files need to be added there).
- Interface still needs to be discussed, so maybe wait a few days before using this.
- Not yet tested on Windows (will do that tomorrow)
- No VS project files yet for the profiling example (will do that tomorrow)


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@4791 dfc29bdd-3216-0410-991c-e03cc46cb475
parent c695a21f
-------------------------- --------------------------
Changes in 1.9 (not yet released) Changes in 1.9 (not yet released)
- Add a code profiler (stop-watch style)
- Add override font to IGUITable - Add override font to IGUITable
- IGUITable can now disable the active column. - IGUITable can now disable the active column.
- IGUIElement::getElementFromPoint now virtual - IGUIElement::getElementFromPoint now virtual
......
# Makefile for Irrlicht Examples
# It's usually sufficient to change just the target name and source file list
# and be sure that CXX is set to a valid compiler
# Name of the executable created (.exe will be added automatically if necessary)
Target := 30.Profiling
# List of source files, separated by spaces
Sources := main.cpp
# Path to Irrlicht directory, should contain include/ and lib/
IrrlichtHome := ../..
# Path for the executable. Note that Irrlicht.dll should usually also be there for win32 systems
BinPath = ../../bin/$(SYSTEM)
# general compiler settings (might need to be set when compiling the lib, too)
# preprocessor flags, e.g. defines and include paths
USERCPPFLAGS =
# compiler flags such as optimization flags
USERCXXFLAGS = -O3 -ffast-math
#USERCXXFLAGS = -g -Wall
# linker flags such as additional libraries and link paths
USERLDFLAGS =
####
#no changes necessary below this line
####
CPPFLAGS = -I$(IrrlichtHome)/include -I/usr/X11R6/include $(USERCPPFLAGS)
CXXFLAGS = $(USERCXXFLAGS)
LDFLAGS = $(USERLDFLAGS)
#default target is Linux
all: all_linux
# target specific settings
all_linux all_win32 static_win32: LDFLAGS += -L$(IrrlichtHome)/lib/$(SYSTEM) -lIrrlicht
all_linux: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lXext -lX11 -lXcursor
all_linux clean_linux: SYSTEM=Linux
all_win32 clean_win32 static_win32: SYSTEM=Win32-gcc
all_win32 clean_win32 static_win32: SUF=.exe
static_win32: CPPFLAGS += -D_IRR_STATIC_LIB_
all_win32: LDFLAGS += -lopengl32 -lm
static_win32: LDFLAGS += -lgdi32 -lwinspool -lcomdlg32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -lopengl32
# name of the binary - only valid for targets which set SYSTEM
DESTPATH = $(BinPath)/$(Target)$(SUF)
all_linux all_win32 static_win32:
$(warning Building...)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(Sources) -o $(DESTPATH) $(LDFLAGS)
clean: clean_linux clean_win32
$(warning Cleaning...)
clean_linux clean_win32:
@$(RM) $(DESTPATH)
.PHONY: all all_win32 static_win32 clean clean_linux clean_win32
#multilib handling
ifeq ($(HOSTTYPE), x86_64)
LIBSELECT=64
endif
#solaris real-time features
ifeq ($(HOSTTYPE), sun4)
LDFLAGS += -lrt
endif
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="Irrlicht Example 30 Profiling" />
<Option pch_mode="0" />
<Option compiler="gcc" />
<Build>
<Target title="Windows">
<Option platforms="Windows;" />
<Option output="../../bin/Win32-gcc/Profiling" prefix_auto="0" extension_auto="1" />
<Option type="1" />
<Option compiler="gcc" />
<Option projectResourceIncludeDirsRelation="1" />
<Compiler>
<Add option="-g" />
</Compiler>
<Linker>
<Add directory="../../lib/Win32-gcc" />
</Linker>
</Target>
<Target title="Linux">
<Option platforms="Unix;" />
<Option output="../../bin/Linux/Profiling" prefix_auto="0" extension_auto="0" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
<Linker>
<Add library="Xxf86vm" />
<Add library="X11" />
<Add library="GL" />
<Add directory="../../lib/Linux" />
</Linker>
</Target>
</Build>
<VirtualTargets>
<Add alias="All" targets="Windows;Linux;" />
</VirtualTargets>
<Compiler>
<Add option="-g" />
<Add directory="../../include" />
</Compiler>
<Linker>
<Add library="Irrlicht" />
</Linker>
<Unit filename="main.cpp" />
<Extensions>
<code_completion />
<debugger />
<envvars />
</Extensions>
</Project>
</CodeBlocks_project_file>
This diff is collapsed.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<CodeBlocks_workspace_file> <CodeBlocks_workspace_file>
<Workspace title="Build all examples"> <Workspace title="Build all examples">
<Project filename="../source/Irrlicht/Irrlicht-gcc.cbp" /> <Project filename="../source/Irrlicht/Irrlicht-gcc.cbp" />
<Project filename="01.HelloWorld/HelloWorld.cbp" active="1" /> <Project filename="01.HelloWorld/HelloWorld.cbp" />
<Project filename="02.Quake3Map/Quake3Map.cbp" /> <Project filename="02.Quake3Map/Quake3Map.cbp" />
<Project filename="03.CustomSceneNode/CustomSceneNode.cbp" /> <Project filename="03.CustomSceneNode/CustomSceneNode.cbp" />
<Project filename="04.Movement/Movement.cbp" /> <Project filename="04.Movement/Movement.cbp" />
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
<Project filename="24.CursorControl/CursorControl.cbp" /> <Project filename="24.CursorControl/CursorControl.cbp" />
<Project filename="25.XmlHandling/XmlHandling.cbp" /> <Project filename="25.XmlHandling/XmlHandling.cbp" />
<Project filename="26.OcclusionQuery/OcclusionQuery.cbp" /> <Project filename="26.OcclusionQuery/OcclusionQuery.cbp" />
<Project filename="30.Profiling/Profiling.cbp" />
<Project filename="Demo/demo.cbp" /> <Project filename="Demo/demo.cbp" />
<Project filename="../tools/GUIEditor/GUIEditor_gcc.cbp" /> <Project filename="../tools/GUIEditor/GUIEditor_gcc.cbp" />
<Project filename="../tools/MeshConverter/MeshConverter.cbp" /> <Project filename="../tools/MeshConverter/MeshConverter.cbp" />
......
This diff is collapsed.
...@@ -91,6 +91,9 @@ enum EGUI_ELEMENT_TYPE ...@@ -91,6 +91,9 @@ enum EGUI_ELEMENT_TYPE
//! The root of the GUI //! The root of the GUI
EGUIET_ROOT, EGUIET_ROOT,
//! IGUIProfiler
EGUIET_PROFILER,
//! Not an element, amount of elements in there //! Not an element, amount of elements in there
EGUIET_COUNT, EGUIET_COUNT,
...@@ -127,6 +130,7 @@ const c8* const GUIElementTypeNames[] = ...@@ -127,6 +130,7 @@ const c8* const GUIElementTypeNames[] =
"window", "window",
"element", "element",
"root", "root",
"profiler",
0 0
}; };
......
...@@ -59,6 +59,7 @@ class IGUIComboBox; ...@@ -59,6 +59,7 @@ class IGUIComboBox;
class IGUIToolBar; class IGUIToolBar;
class IGUIButton; class IGUIButton;
class IGUIWindow; class IGUIWindow;
class IGUIProfiler;
class IGUIElementFactory; class IGUIElementFactory;
//! GUI Environment. Used as factory and manager of all other GUI elements. //! GUI Environment. Used as factory and manager of all other GUI elements.
...@@ -540,6 +541,14 @@ public: ...@@ -540,6 +541,14 @@ public:
virtual IGUITable* addTable(const core::rect<s32>& rectangle, virtual IGUITable* addTable(const core::rect<s32>& rectangle,
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) =0; IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) =0;
//! Adds an element to display the information from the Irrlicht profiler
/** \param rectangle Rectangle specifying the borders of the element.
\param parent Parent of the element. When 0 the environment itself will
be the parent.
\param id An identifier for the element. */
virtual IGUIProfiler* addProfilerDisplay(const core::rect<s32>& rectangle,
IGUIElement* parent=0, s32 id=-1) = 0;
//! Get the default element factory which can create all built-in elements //! Get the default element factory which can create all built-in elements
/** \return Pointer to the factory. /** \return Pointer to the factory.
This pointer should not be dropped. See IReferenceCounted::drop() for This pointer should not be dropped. See IReferenceCounted::drop() for
......
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef I_GUI_PROFILER_H_INCLUDED__
#define I_GUI_PROFILER_H_INCLUDED__
#include "IGUIElement.h"
namespace irr
{
namespace gui
{
class IGUIFont;
//! Element to display profiler information
class IGUIProfiler : public IGUIElement
{
public:
//! constructor
IGUIProfiler(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
: IGUIElement(EGUIET_PROFILER, environment, parent, id, rectangle)
{}
//! Show first page of profile data
/** \param includeOverview When true show the group-overview page, when false show the profile data of the first group */
virtual void firstPage(bool includeOverview=true) = 0;
//! Show next page of profile data
/** \param includeOverview Include the group-overview page */
virtual void nextPage(bool includeOverview=true) = 0;
//! Show previous page of profile data
/** \param includeOverview Include the group-overview page */
virtual void previousPage(bool includeOverview=true) = 0;
//! Don't display stats for data which never got called
virtual void setIgnoreUncalled(bool ignore) = 0;
//! Check if we display stats for data which never got called
virtual bool getIgnoreUncalled() const = 0;
//! Sets another skin independent font.
/** If this is set to zero, the button uses the font of the skin.
\param font: New font to set. */
virtual void setOverrideFont(IGUIFont* font=0) = 0;
//! Gets the override font (if any)
/** \return The override font (may be 0) */
virtual IGUIFont* getOverrideFont(void) const = 0;
//! Get the font which is used right now for drawing
/** Currently this is the override font when one is set and the
font of the active skin otherwise */
virtual IGUIFont* getActiveFont() const = 0;
};
} // end namespace gui
} // end namespace irr
#endif
...@@ -136,6 +136,15 @@ ...@@ -136,6 +136,15 @@
#undef _IRR_COMPILE_WITH_LEAK_HUNTER_ #undef _IRR_COMPILE_WITH_LEAK_HUNTER_
#endif #endif
//! Enable profiling information in the engine
/** NOTE: The profiler itself always exists and can be used by applications.
This define is about the engine creating profile data
while it runs and enabling it will slow down the engine. */
//#define _IRR_COMPILE_WITH_PROFILING_
#ifdef NO_IRR_COMPILE_WITH_PROFILING_
#undef _IRR_COMPILE_WITH_PROFILING_
#endif
//! Define _IRR_COMPILE_WITH_DIRECT3D_8_ and _IRR_COMPILE_WITH_DIRECT3D_9_ to //! Define _IRR_COMPILE_WITH_DIRECT3D_8_ and _IRR_COMPILE_WITH_DIRECT3D_9_ to
//! compile the Irrlicht engine with Direct3D8 and/or DIRECT3D9. //! compile the Irrlicht engine with Direct3D8 and/or DIRECT3D9.
/** If you only want to use the software device or opengl you can disable those defines. /** If you only want to use the software device or opengl you can disable those defines.
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "CMeshBuffer.h" #include "CMeshBuffer.h"
#include "coreutil.h" #include "coreutil.h"
#include "CVertexBuffer.h" #include "CVertexBuffer.h"
#include "CProfiler.h"
#include "dimension2d.h" #include "dimension2d.h"
#include "ECullingTypes.h" #include "ECullingTypes.h"
#include "EDebugSceneTypes.h" #include "EDebugSceneTypes.h"
...@@ -97,6 +98,7 @@ ...@@ -97,6 +98,7 @@
#include "IGUIToolbar.h" #include "IGUIToolbar.h"
#include "IGUIWindow.h" #include "IGUIWindow.h"
#include "IGUITreeView.h" #include "IGUITreeView.h"
#include "IGUIProfiler.h"
#include "IImage.h" #include "IImage.h"
#include "IImageLoader.h" #include "IImageLoader.h"
#include "IImageWriter.h" #include "IImageWriter.h"
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "IGUIToolbar.h" #include "IGUIToolbar.h"
#include "IGUIWindow.h" #include "IGUIWindow.h"
#include "IGUITreeView.h" #include "IGUITreeView.h"
#include "IGUIProfiler.h"
namespace irr namespace irr
{ {
...@@ -96,6 +97,8 @@ IGUIElement* CDefaultGUIElementFactory::addGUIElement(EGUI_ELEMENT_TYPE type, IG ...@@ -96,6 +97,8 @@ IGUIElement* CDefaultGUIElementFactory::addGUIElement(EGUI_ELEMENT_TYPE type, IG
return Environment->addSpinBox(L"0.0", core::rect<s32>(0,0,100,100), true, parent); return Environment->addSpinBox(L"0.0", core::rect<s32>(0,0,100,100), true, parent);
case EGUIET_TREE_VIEW: case EGUIET_TREE_VIEW:
return Environment->addTreeView(core::rect<s32>(0,0,100,100),parent); return Environment->addTreeView(core::rect<s32>(0,0,100,100),parent);
case EGUIET_PROFILER:
return Environment->addProfilerDisplay(core::rect<s32>(0,0,100,100), parent);
default: default:
return 0; return 0;
} }
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "CGUIMenu.h" #include "CGUIMenu.h"
#include "CGUIToolBar.h" #include "CGUIToolBar.h"
#include "CGUITable.h" #include "CGUITable.h"
#include "CGUIProfiler.h"
#include "CDefaultGUIElementFactory.h" #include "CDefaultGUIElementFactory.h"
#include "IWriteFile.h" #include "IWriteFile.h"
...@@ -1127,6 +1128,13 @@ IGUITable* CGUIEnvironment::addTable(const core::rect<s32>& rectangle, IGUIEleme ...@@ -1127,6 +1128,13 @@ IGUITable* CGUIEnvironment::addTable(const core::rect<s32>& rectangle, IGUIEleme
return b; return b;
} }
//! Adds an element to display the information from the Irrlicht profiler
IGUIProfiler* CGUIEnvironment::addProfilerDisplay(const core::rect<s32>& rectangle, IGUIElement* parent, s32 id)
{
CGUIProfiler* p = new CGUIProfiler(this, parent ? parent : this, id, rectangle);
p->drop();
return p;
}
//! Adds an image element. //! Adds an image element.
IGUIImage* CGUIEnvironment::addImage(video::ITexture* image, core::position2d<s32> pos, IGUIImage* CGUIEnvironment::addImage(video::ITexture* image, core::position2d<s32> pos,
......
...@@ -183,6 +183,10 @@ public: ...@@ -183,6 +183,10 @@ public:
virtual IGUITable* addTable(const core::rect<s32>& rectangle, virtual IGUITable* addTable(const core::rect<s32>& rectangle,
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) _IRR_OVERRIDE_; IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) _IRR_OVERRIDE_;
//! Adds an element to display the information from the Irrlicht profiler
virtual IGUIProfiler* addProfilerDisplay(const core::rect<s32>& rectangle,
IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
//! sets the focus to an element //! sets the focus to an element
virtual bool setFocus(IGUIElement* element) _IRR_OVERRIDE_; virtual bool setFocus(IGUIElement* element) _IRR_OVERRIDE_;
......
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
// TODO: We should have more pages for groups that don't fit into the display area.
// So additional to CurrentGroupIdx we would also have a current-page-for-current-group thing.
// The interface doesn't have to be changed for that - just the implementation.
#include "CGUIProfiler.h"
#ifdef _IRR_COMPILE_WITH_GUI_
#include "IGUITable.h"
#include "IGUIEnvironment.h"
#include "CProfiler.h"
namespace irr
{
namespace gui
{
//! constructor
CGUIProfiler::CGUIProfiler(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
: IGUIProfiler(environment, parent, id, rectangle)
, DisplayTable(0), CurrentGroupIdx(0), IgnoreUncalled(false)
{
Profiler = &getProfiler();
core::recti r(0, 0, rectangle.getWidth(), rectangle.getHeight());
// Really just too lazy to code a complete new element for this.
// If anyone can do this nicer he's welcome.
DisplayTable = Environment->addTable(r, this, -1, true);
DisplayTable->setAlignment(EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT);
DisplayTable->setSubElement(true);
rebuildColumns();
}
void CGUIProfiler::fillRow(u32 rowIndex, const SProfileData& data, bool overviewTitle, bool groupTitle)
{
DisplayTable->setCellText(rowIndex, 0, data.getName());
if ( !overviewTitle )
DisplayTable->setCellText(rowIndex, 1, core::stringw(data.getCallsCounter()));
if ( data.getCallsCounter() > 0 )
{
DisplayTable->setCellText(rowIndex, 2, core::stringw(data.getTimeSum()));
DisplayTable->setCellText(rowIndex, 3, core::stringw((u32)((f32)data.getTimeSum()/(f32)data.getCallsCounter())));
DisplayTable->setCellText(rowIndex, 4, core::stringw(data.getLongestTime()));
}
if ( overviewTitle || groupTitle )
{
const video::SColor titleColor(255, 0, 0, 255);
DisplayTable->setCellColor(rowIndex, 0, titleColor);
}
}
void CGUIProfiler::rebuildColumns()
{
if ( DisplayTable )
{
DisplayTable->clear();
DisplayTable->addColumn(L"name ");
DisplayTable->addColumn(L"count calls");
DisplayTable->addColumn(L"time(sum)");
DisplayTable->addColumn(L"time(avg)");
DisplayTable->addColumn(L"time(max) ");
DisplayTable->setActiveColumn(-1);
}
}
void CGUIProfiler::updateDisplay()
{
if ( DisplayTable )
{
DisplayTable->clearRows();
if ( CurrentGroupIdx < Profiler->getGroupCount() )
{
bool overview = CurrentGroupIdx == 0;
u32 rowIndex = 0;
const SProfileData& groupData = Profiler->getGroupData(CurrentGroupIdx);
if ( overview || !IgnoreUncalled || groupData.getCallsCounter() > 0 )
{
rowIndex = DisplayTable->addRow(rowIndex);
fillRow(rowIndex, groupData, overview, true);
++rowIndex;
}
// show overview over groups?
if ( overview )
{
for ( u32 i=1; i<Profiler->getGroupCount(); ++i )
{
const SProfileData& groupData = Profiler->getGroupData(i);
if ( !IgnoreUncalled || groupData.getCallsCounter() > 0 )
{
rowIndex = DisplayTable->addRow(rowIndex);
fillRow(rowIndex, groupData, false, false);
++rowIndex;
}
}
}
// show data for all elements in current group
else
{
for ( u32 i=0; i < Profiler->getProfileDataCount(); ++i )
{
const SProfileData& data = Profiler->getProfileDataByIndex(i);
if ( data.getGroupIndex() == CurrentGroupIdx
&& (!IgnoreUncalled || data.getCallsCounter() > 0) )
{
rowIndex = DisplayTable->addRow(rowIndex);
fillRow(rowIndex, data, false, false);
++rowIndex;
}
}
}
}
}
}
void CGUIProfiler::draw()
{
if ( isVisible() )
{
updateDisplay();
}
IGUIElement::draw();
}
void CGUIProfiler::nextPage(bool includeOverview)
{
if ( ++CurrentGroupIdx >= Profiler->getGroupCount() )
{
if ( includeOverview )
CurrentGroupIdx = 0;
else
CurrentGroupIdx = 1; // can be invalid
}
}
void CGUIProfiler::previousPage(bool includeOverview)
{
if ( CurrentGroupIdx > 0 )
--CurrentGroupIdx;
else
CurrentGroupIdx = Profiler->getGroupCount()-1;
if ( CurrentGroupIdx == 0 && !includeOverview )
{
if ( Profiler->getGroupCount() )
CurrentGroupIdx = Profiler->getGroupCount()-1;
if ( CurrentGroupIdx == 0 )
CurrentGroupIdx = 1; // invalid to avoid showing the overview
}
}
void CGUIProfiler::firstPage(bool includeOverview)
{
if ( includeOverview )
CurrentGroupIdx = 0;
else
CurrentGroupIdx = 1; // can be invalid
}
void CGUIProfiler::setIgnoreUncalled(bool ignore)
{
IgnoreUncalled = ignore;
}
bool CGUIProfiler::getIgnoreUncalled() const
{
return IgnoreUncalled;
}
//! Sets another skin independent font.
void CGUIProfiler::setOverrideFont(IGUIFont* font)
{
if ( DisplayTable )
{
DisplayTable->setOverrideFont(font);
rebuildColumns();
}
}
//! Gets the override font (if any)
IGUIFont * CGUIProfiler::getOverrideFont() const
{
if ( DisplayTable )
return DisplayTable->getOverrideFont();
return 0;
}
//! Get the font which is used right now for drawing
IGUIFont* CGUIProfiler::getActiveFont() const
{
if ( DisplayTable )
return DisplayTable->getActiveFont();
return 0;
}
} // end namespace gui
} // end namespace irr
#endif // _IRR_COMPILE_WITH_GUI_
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef C_GUI_PROFILER_H_INCLUDED__
#define C_GUI_PROFILER_H_INCLUDED__
#include "IrrCompileConfig.h"
#ifdef _IRR_COMPILE_WITH_GUI_
#include "IGUIProfiler.h"
namespace irr
{
class CProfiler;
struct SProfileData;
namespace gui
{
class IGUITable;
//! Element to display profiler information
class CGUIProfiler : public IGUIProfiler
{
public:
//! constructor
CGUIProfiler(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle);
//! Show first page of profile data
virtual void firstPage(bool includeOverview) _IRR_OVERRIDE_;
//! Show next page of profile data
virtual void nextPage(bool includeOverview) _IRR_OVERRIDE_;
//! Show previous page of profile data
virtual void previousPage(bool includeOverview) _IRR_OVERRIDE_;
//! Don't display stats for data which never got called
/** Default is false */
virtual void setIgnoreUncalled(bool ignore) _IRR_OVERRIDE_;
//! Check if we display stats for data which never got called
virtual bool getIgnoreUncalled() const _IRR_OVERRIDE_;
//! Sets another skin independent font.
virtual void setOverrideFont(IGUIFont* font=0) _IRR_OVERRIDE_;
//! Gets the override font (if any)
virtual IGUIFont* getOverrideFont() const _IRR_OVERRIDE_;
//! Get the font which is used right now for drawing
virtual IGUIFont* getActiveFont() const _IRR_OVERRIDE_;
virtual IGUIElement* getElementFromPoint(const core::position2d<s32>& point) _IRR_OVERRIDE_
{
// This element should never get focus from mouse-clicks
return 0;
}
virtual void draw() _IRR_OVERRIDE_;
protected:
void updateDisplay();
void fillRow(u32 rowIndex, const SProfileData& data, bool overviewTitle, bool groupTitle);
void rebuildColumns();
CProfiler * Profiler;
irr::gui::IGUITable* DisplayTable;
irr::u32 CurrentGroupIdx;
bool IgnoreUncalled;
};
} // end namespace gui
} // end namespace irr
#endif // _IRR_COMPILE_WITH_GUI_
#endif // __C_GUI_IMAGE_H_INCLUDED__
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
#include "IMaterialRenderer.h" #include "IMaterialRenderer.h"
#include "os.h" #include "os.h"
#include "CShadowVolumeSceneNode.h" #include "CShadowVolumeSceneNode.h"
#include "EProfileIDs.h"
#include "CProfiler.h"
namespace irr namespace irr
{ {
...@@ -31,6 +33,16 @@ COctreeSceneNode::COctreeSceneNode(ISceneNode* parent, ISceneManager* mgr, ...@@ -31,6 +33,16 @@ COctreeSceneNode::COctreeSceneNode(ISceneNode* parent, ISceneManager* mgr,
#ifdef _DEBUG #ifdef _DEBUG
setDebugName("COctreeSceneNode"); setDebugName("COctreeSceneNode");
#endif #endif
IRR_PROFILE(
static bool initProfile = false;
if (!initProfile )
{
initProfile = true;
getProfiler().add(EPID_OC_RENDER, L"render octnode", L"Irrlicht scene");
getProfiler().add(EPID_OC_CALCPOLYS, L"calc octnode", L"Irrlicht scene");
}
)
} }
...@@ -89,6 +101,7 @@ void COctreeSceneNode::OnRegisterSceneNode() ...@@ -89,6 +101,7 @@ void COctreeSceneNode::OnRegisterSceneNode()
//! renders the node. //! renders the node.
void COctreeSceneNode::render() void COctreeSceneNode::render()
{ {
IRR_PROFILE(CProfileScope psRender(EPID_OC_RENDER);)
video::IVideoDriver* driver = SceneManager->getVideoDriver(); video::IVideoDriver* driver = SceneManager->getVideoDriver();
if (VertexType == -1 || !driver) if (VertexType == -1 || !driver)
...@@ -122,10 +135,12 @@ void COctreeSceneNode::render() ...@@ -122,10 +135,12 @@ void COctreeSceneNode::render()
{ {
case video::EVT_STANDARD: case video::EVT_STANDARD:
{ {
IRR_PROFILE(getProfiler().start(EPID_OC_CALCPOLYS));
if (BoxBased) if (BoxBased)
StdOctree->calculatePolys(box); StdOctree->calculatePolys(box);
else else
StdOctree->calculatePolys(frust); StdOctree->calculatePolys(frust);
IRR_PROFILE(getProfiler().stop(EPID_OC_CALCPOLYS));
const Octree<video::S3DVertex>::SIndexData* d = StdOctree->getIndexData(); const Octree<video::S3DVertex>::SIndexData* d = StdOctree->getIndexData();
...@@ -170,10 +185,12 @@ void COctreeSceneNode::render() ...@@ -170,10 +185,12 @@ void COctreeSceneNode::render()
break; break;
case video::EVT_2TCOORDS: case video::EVT_2TCOORDS:
{ {
IRR_PROFILE(getProfiler().start(EPID_OC_CALCPOLYS));
if (BoxBased) if (BoxBased)
LightMapOctree->calculatePolys(box); LightMapOctree->calculatePolys(box);
else else
LightMapOctree->calculatePolys(frust); LightMapOctree->calculatePolys(frust);
IRR_PROFILE(getProfiler().stop(EPID_OC_CALCPOLYS));
const Octree<video::S3DVertex2TCoords>::SIndexData* d = LightMapOctree->getIndexData(); const Octree<video::S3DVertex2TCoords>::SIndexData* d = LightMapOctree->getIndexData();
...@@ -236,10 +253,12 @@ void COctreeSceneNode::render() ...@@ -236,10 +253,12 @@ void COctreeSceneNode::render()
break; break;
case video::EVT_TANGENTS: case video::EVT_TANGENTS:
{ {
IRR_PROFILE(getProfiler().start(EPID_OC_CALCPOLYS));
if (BoxBased) if (BoxBased)
TangentsOctree->calculatePolys(box); TangentsOctree->calculatePolys(box);
else else
TangentsOctree->calculatePolys(frust); TangentsOctree->calculatePolys(frust);
IRR_PROFILE(getProfiler().stop(EPID_OC_CALCPOLYS));
const Octree<video::S3DVertexTangents>::SIndexData* d = TangentsOctree->getIndexData(); const Octree<video::S3DVertexTangents>::SIndexData* d = TangentsOctree->getIndexData();
......
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#include "CProfiler.h"
#include "CTimer.h"
#include <limits.h>
namespace irr
{
IRRLICHT_API CProfiler& IRRCALLCONV getProfiler()
{
static CProfiler profiler;
return profiler;
}
//! Convert the whole data into a string
core::stringw SProfileData::getAsString() const
{
if ( CountCalls > 0 )
{
#ifdef _MSC_VER
#pragma warning(disable:4996) // 'sprintf' was declared deprecated
#endif
// Can't use swprintf as it fails on some platforms (especially mobile platforms)
// Can't use Irrlicht functions because we have no string formatting.
char dummy[1023];
sprintf(dummy, "%-15.15s%-12u%-12u%-12u%-12u",
core::stringc(Name).c_str(), CountCalls, TimeSum,
TimeSum / CountCalls, LongestTime);
dummy[1022] = 0;
return core::stringw(dummy);
#ifdef _MSC_VER
#pragma warning(default :4996) // 'sprintf' was declared deprecated
#endif
}
else
{
return Name;
}
}
//! Return a string which describes the columns returned by getAsString
core::stringw SProfileData::makeTitleString()
{
return core::stringw("name calls time(sum) time(avg) time(max)");
}
void SProfileData::reset()
{
CountCalls = 0;
LongestTime = 0;
TimeSum = 0;
LastTimeStarted = 0;
}
CProfiler::CProfiler()
: Timer(0)
, NextAutoId(INT_MAX)
{
Timer = new CTimer(true);
addGroup(L"overview");
}
CProfiler::~CProfiler()
{
if ( Timer )
Timer->drop();
}
s32 CProfiler::add(const core::stringw &name, const core::stringw &groupName)
{
u32 index;
if ( findDataIndex(index, name) )
{
add( ProfileDatas[index].Id, name, groupName );
return ProfileDatas[index].Id;
}
else
{
s32 id = NextAutoId;
--NextAutoId;
add( id, name, groupName );
return id;
}
}
void CProfiler::add(s32 id, const core::stringw &name, const core::stringw &groupName)
{
u32 groupIdx;
if ( !findGroupIndex(groupIdx, groupName) )
{
groupIdx = addGroup(groupName);
}
SProfileData data(id);
s32 idx = ProfileDatas.binary_search(data);
if ( idx < 0 )
{
data.reset();
data.GroupIndex = groupIdx;
data.Name = name;
ProfileDatas.push_back(data);
ProfileDatas.sort();
}
else
{
// only reset on group changes, otherwise we want to keep the data or coding CProfileScope would become tricky.
if ( groupIdx != ProfileDatas[idx].GroupIndex )
{
resetDataByIndex((u32)idx);
ProfileDatas[idx].GroupIndex = groupIdx;
}
ProfileDatas[idx].Name = name;
}
}
u32 CProfiler::addGroup(const core::stringw &name)
{
SProfileData group;
group.Id = -1; // Id for groups doesn't matter so far
group.Name = name;
ProfileGroups.push_back(group);
return ProfileGroups.size()-1;
}
bool CProfiler::findDataIndex(u32 & result, const core::stringw &name) const
{
for ( u32 i=0; i < ProfileDatas.size(); ++i )
{
if ( ProfileDatas[i].Name == name )
{
result = i;
return true;
}
}
return false;
}
bool CProfiler::findGroupIndex(u32 & result, const core::stringw &name) const
{
for ( u32 i=0; i < ProfileGroups.size(); ++i )
{
if ( ProfileGroups[i].Name == name )
{
result = i;
return true;
}
}
return false;
}
void CProfiler::resetDataById(s32 id)
{
s32 idx = ProfileDatas.binary_search(SProfileData(id));
if ( idx >= 0 )
{
resetDataByIndex((u32)idx);
}
}
void CProfiler::resetDataByIndex(u32 index)
{
SProfileData &data = ProfileDatas[index];
SProfileData & group = ProfileGroups[data.GroupIndex];
group.CountCalls -= data.CountCalls;
group.TimeSum -= data.TimeSum;
data.reset();
}
//! Reset profile data for a whole group
void CProfiler::resetGroup(u32 index)
{
for ( u32 i=0; i<ProfileDatas.size(); ++i )
{
if ( ProfileDatas[i].GroupIndex == index )
ProfileDatas[i].reset();
}
if ( index < ProfileGroups.size() )
ProfileGroups[index].reset();
}
void CProfiler::resetAll()
{
for ( u32 i=0; i<ProfileDatas.size(); ++i )
{
ProfileDatas[i].reset();
}
for ( u32 i=0; i<ProfileGroups.size(); ++i )
{
ProfileGroups[i].reset();
}
}
void CProfiler::printAll(core::stringw &ostream, bool includeOverview, bool suppressUncalled) const
{
ostream += SProfileData::makeTitleString();
ostream += L"\n";
for ( u32 i=includeOverview ?0:1; i<ProfileGroups.size(); ++i )
{
printGroup( ostream, i, suppressUncalled );
}
}
void CProfiler::printGroup(core::stringw &ostream, u32 idxGroup, bool suppressUncalled) const
{
ostream += ProfileGroups[idxGroup].getAsString();
ostream += L"\n";
// print overview for groups
if ( idxGroup == 0 )
{
for ( u32 i=0; i<ProfileGroups.size(); ++i )
{
if ( !suppressUncalled || ProfileGroups[i].CountCalls > 0)
{
ostream += ProfileGroups[i].getAsString();
ostream += L"\n";
}
}
}
// print all data in a group
else
{
for ( u32 i=0; i<ProfileDatas.size(); ++i )
{
if ( (!suppressUncalled || ProfileDatas[i].CountCalls > 0)
&& ProfileDatas[i].GroupIndex == idxGroup )
{
ostream += ProfileDatas[i].getAsString();
ostream += L"\n";
}
}
}
}
} // namespace irr
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include "IReadFile.h" #include "IReadFile.h"
#include "IWriteFile.h" #include "IWriteFile.h"
#include "ISceneLoader.h" #include "ISceneLoader.h"
#include "EProfileIDs.h"
#include "CProfiler.h"
#include "os.h" #include "os.h"
...@@ -308,6 +310,24 @@ CSceneManager::CSceneManager(video::IVideoDriver* driver, io::IFileSystem* fs, ...@@ -308,6 +310,24 @@ CSceneManager::CSceneManager(video::IVideoDriver* driver, io::IFileSystem* fs,
ISceneNodeAnimatorFactory* animatorFactory = new CDefaultSceneNodeAnimatorFactory(this, CursorControl); ISceneNodeAnimatorFactory* animatorFactory = new CDefaultSceneNodeAnimatorFactory(this, CursorControl);
registerSceneNodeAnimatorFactory(animatorFactory); registerSceneNodeAnimatorFactory(animatorFactory);
animatorFactory->drop(); animatorFactory->drop();
IRR_PROFILE(
static bool initProfile = false;
if (!initProfile )
{
initProfile = true;
getProfiler().add(EPID_SM_DRAW_ALL, L"drawAll", L"Irrlicht scene");
getProfiler().add(EPID_SM_ANIMATE, L"animate", L"Irrlicht scene");
getProfiler().add(EPID_SM_RENDER_CAMERAS, L"cameras", L"Irrlicht scene");
getProfiler().add(EPID_SM_RENDER_LIGHTS, L"lights", L"Irrlicht scene");
getProfiler().add(EPID_SM_RENDER_SKYBOXES, L"skyboxes", L"Irrlicht scene");
getProfiler().add(EPID_SM_RENDER_DEFAULT, L"defaultnodes", L"Irrlicht scene");
getProfiler().add(EPID_SM_RENDER_SHADOWS, L"shadows", L"Irrlicht scene");
getProfiler().add(EPID_SM_RENDER_TRANSPARENT, L"transp.nodes", L"Irrlicht scene");
getProfiler().add(EPID_SM_RENDER_EFFECT, L"effectnodes", L"Irrlicht scene");
getProfiler().add(EPID_SM_REGISTER, L"reg.render.node", L"Irrlicht scene");
}
)
} }
...@@ -1228,6 +1248,7 @@ bool CSceneManager::isCulled(const ISceneNode* node) const ...@@ -1228,6 +1248,7 @@ bool CSceneManager::isCulled(const ISceneNode* node) const
//! registers a node for rendering it at a specific time. //! registers a node for rendering it at a specific time.
u32 CSceneManager::registerNodeForRendering(ISceneNode* node, E_SCENE_NODE_RENDER_PASS pass) u32 CSceneManager::registerNodeForRendering(ISceneNode* node, E_SCENE_NODE_RENDER_PASS pass)
{ {
IRR_PROFILE(CProfileScope p1(EPID_SM_REGISTER);)
u32 taken = 0; u32 taken = 0;
switch(pass) switch(pass)
...@@ -1345,6 +1366,8 @@ u32 CSceneManager::registerNodeForRendering(ISceneNode* node, E_SCENE_NODE_RENDE ...@@ -1345,6 +1366,8 @@ u32 CSceneManager::registerNodeForRendering(ISceneNode* node, E_SCENE_NODE_RENDE
//! draws all scene nodes //! draws all scene nodes
void CSceneManager::drawAll() void CSceneManager::drawAll()
{ {
IRR_PROFILE(CProfileScope psAll(EPID_SM_DRAW_ALL);)
if (!Driver) if (!Driver)
return; return;
...@@ -1370,18 +1393,22 @@ void CSceneManager::drawAll() ...@@ -1370,18 +1393,22 @@ void CSceneManager::drawAll()
Driver->setAllowZWriteOnTransparent(Parameters->getAttributeAsBool(ALLOW_ZWRITE_ON_TRANSPARENT)); Driver->setAllowZWriteOnTransparent(Parameters->getAttributeAsBool(ALLOW_ZWRITE_ON_TRANSPARENT));
// do animations and other stuff. // do animations and other stuff.
IRR_PROFILE(getProfiler().start(EPID_SM_ANIMATE));
OnAnimate(os::Timer::getTime()); OnAnimate(os::Timer::getTime());
IRR_PROFILE(getProfiler().stop(EPID_SM_ANIMATE));
/*! /*!
First Scene Node for prerendering should be the active camera First Scene Node for prerendering should be the active camera
consistent Camera is needed for culling consistent Camera is needed for culling
*/ */
IRR_PROFILE(getProfiler().start(EPID_SM_RENDER_CAMERAS));
camWorldPos.set(0,0,0); camWorldPos.set(0,0,0);
if (ActiveCamera) if (ActiveCamera)
{ {
ActiveCamera->render(); ActiveCamera->render();
camWorldPos = ActiveCamera->getAbsolutePosition(); camWorldPos = ActiveCamera->getAbsolutePosition();
} }
IRR_PROFILE(getProfiler().stop(EPID_SM_RENDER_CAMERAS));
// let all nodes register themselves // let all nodes register themselves
OnRegisterSceneNode(); OnRegisterSceneNode();
...@@ -1391,6 +1418,7 @@ void CSceneManager::drawAll() ...@@ -1391,6 +1418,7 @@ void CSceneManager::drawAll()
//render camera scenes //render camera scenes
{ {
IRR_PROFILE(CProfileScope psCam(EPID_SM_RENDER_CAMERAS);)
CurrentRenderPass = ESNRP_CAMERA; CurrentRenderPass = ESNRP_CAMERA;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0); Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);
...@@ -1408,6 +1436,7 @@ void CSceneManager::drawAll() ...@@ -1408,6 +1436,7 @@ void CSceneManager::drawAll()
//render lights scenes //render lights scenes
{ {
IRR_PROFILE(CProfileScope psLights(EPID_SM_RENDER_LIGHTS);)
CurrentRenderPass = ESNRP_LIGHT; CurrentRenderPass = ESNRP_LIGHT;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0); Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);
...@@ -1452,6 +1481,7 @@ void CSceneManager::drawAll() ...@@ -1452,6 +1481,7 @@ void CSceneManager::drawAll()
// render skyboxes // render skyboxes
{ {
IRR_PROFILE(CProfileScope psSkyBox(EPID_SM_RENDER_SKYBOXES);)
CurrentRenderPass = ESNRP_SKY_BOX; CurrentRenderPass = ESNRP_SKY_BOX;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0); Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);
...@@ -1481,6 +1511,7 @@ void CSceneManager::drawAll() ...@@ -1481,6 +1511,7 @@ void CSceneManager::drawAll()
// render default objects // render default objects
{ {
IRR_PROFILE(CProfileScope psDefault(EPID_SM_RENDER_DEFAULT);)
CurrentRenderPass = ESNRP_SOLID; CurrentRenderPass = ESNRP_SOLID;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0); Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);
...@@ -1514,6 +1545,7 @@ void CSceneManager::drawAll() ...@@ -1514,6 +1545,7 @@ void CSceneManager::drawAll()
// render shadows // render shadows
{ {
IRR_PROFILE(CProfileScope psShadow(EPID_SM_RENDER_SHADOWS);)
CurrentRenderPass = ESNRP_SHADOW; CurrentRenderPass = ESNRP_SHADOW;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0); Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);
...@@ -1546,6 +1578,7 @@ void CSceneManager::drawAll() ...@@ -1546,6 +1578,7 @@ void CSceneManager::drawAll()
// render transparent objects. // render transparent objects.
{ {
IRR_PROFILE(CProfileScope psTrans(EPID_SM_RENDER_TRANSPARENT);)
CurrentRenderPass = ESNRP_TRANSPARENT; CurrentRenderPass = ESNRP_TRANSPARENT;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0); Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);
...@@ -1579,6 +1612,7 @@ void CSceneManager::drawAll() ...@@ -1579,6 +1612,7 @@ void CSceneManager::drawAll()
// render transparent effect objects. // render transparent effect objects.
{ {
IRR_PROFILE(CProfileScope psEffect(EPID_SM_RENDER_EFFECT);)
CurrentRenderPass = ESNRP_TRANSPARENT_EFFECT; CurrentRenderPass = ESNRP_TRANSPARENT_EFFECT;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0); Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);
......
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef E_PROFILE_IDS_H_INCLUDED__
#define E_PROFILE_IDS_H_INCLUDED__
#include "IrrCompileConfig.h"
#include "limits.h"
namespace irr
{
#ifdef _IRR_COMPILE_WITH_PROFILING_
enum EPROFILE_ID
{
// We use negative ID's to avoid clashing with user application id's.
EPID_FIRST = -INT_MAX, // not used
//! scenemanager.
EPID_SM_DRAW_ALL,
EPID_SM_ANIMATE,
EPID_SM_RENDER_CAMERAS,
EPID_SM_RENDER_LIGHTS,
EPID_SM_RENDER_SKYBOXES,
EPID_SM_RENDER_DEFAULT,
EPID_SM_RENDER_SHADOWS,
EPID_SM_RENDER_TRANSPARENT,
EPID_SM_RENDER_EFFECT,
EPID_SM_REGISTER,
//! octrees
EPID_OC_RENDER,
EPID_OC_CALCPOLYS
};
#endif
} // end namespace irr
#endif // E_PROFILE_IDS_H_INCLUDED__
...@@ -414,6 +414,7 @@ ...@@ -414,6 +414,7 @@
<Unit filename="../../include/CDynamicMeshBuffer.h" /> <Unit filename="../../include/CDynamicMeshBuffer.h" />
<Unit filename="../../include/CIndexBuffer.h" /> <Unit filename="../../include/CIndexBuffer.h" />
<Unit filename="../../include/CMeshBuffer.h" /> <Unit filename="../../include/CMeshBuffer.h" />
<Unit filename="../../include/CProfiler.h" />
<Unit filename="../../include/CVertexBuffer.h" /> <Unit filename="../../include/CVertexBuffer.h" />
<Unit filename="../../include/EAttributes.h" /> <Unit filename="../../include/EAttributes.h" />
<Unit filename="../../include/ECullingTypes.h" /> <Unit filename="../../include/ECullingTypes.h" />
...@@ -470,6 +471,7 @@ ...@@ -470,6 +471,7 @@
<Unit filename="../../include/IGUIInOutFader.h" /> <Unit filename="../../include/IGUIInOutFader.h" />
<Unit filename="../../include/IGUIListBox.h" /> <Unit filename="../../include/IGUIListBox.h" />
<Unit filename="../../include/IGUIMeshViewer.h" /> <Unit filename="../../include/IGUIMeshViewer.h" />
<Unit filename="../../include/IGUIProfiler.h" />
<Unit filename="../../include/IGUIScrollBar.h" /> <Unit filename="../../include/IGUIScrollBar.h" />
<Unit filename="../../include/IGUISkin.h" /> <Unit filename="../../include/IGUISkin.h" />
<Unit filename="../../include/IGUISpinBox.h" /> <Unit filename="../../include/IGUISpinBox.h" />
...@@ -713,6 +715,8 @@ ...@@ -713,6 +715,8 @@
<Unit filename="CGUIMessageBox.h" /> <Unit filename="CGUIMessageBox.h" />
<Unit filename="CGUIModalScreen.cpp" /> <Unit filename="CGUIModalScreen.cpp" />
<Unit filename="CGUIModalScreen.h" /> <Unit filename="CGUIModalScreen.h" />
<Unit filename="CGUIProfiler.cpp" />
<Unit filename="CGUIProfiler.h" />
<Unit filename="CGUIScrollBar.cpp" /> <Unit filename="CGUIScrollBar.cpp" />
<Unit filename="CGUIScrollBar.h" /> <Unit filename="CGUIScrollBar.h" />
<Unit filename="CGUISkin.cpp" /> <Unit filename="CGUISkin.cpp" />
...@@ -887,6 +891,7 @@ ...@@ -887,6 +891,7 @@
<Unit filename="CParticleSphereEmitter.h" /> <Unit filename="CParticleSphereEmitter.h" />
<Unit filename="CParticleSystemSceneNode.cpp" /> <Unit filename="CParticleSystemSceneNode.cpp" />
<Unit filename="CParticleSystemSceneNode.h" /> <Unit filename="CParticleSystemSceneNode.h" />
<Unit filename="CProfiler.cpp" />
<Unit filename="CQ3LevelMesh.cpp" /> <Unit filename="CQ3LevelMesh.cpp" />
<Unit filename="CQ3LevelMesh.h" /> <Unit filename="CQ3LevelMesh.h" />
<Unit filename="CQuake3ShaderSceneNode.cpp" /> <Unit filename="CQuake3ShaderSceneNode.cpp" />
...@@ -1007,6 +1012,7 @@ ...@@ -1007,6 +1012,7 @@
<Unit filename="CZBuffer.h" /> <Unit filename="CZBuffer.h" />
<Unit filename="CZipReader.cpp" /> <Unit filename="CZipReader.cpp" />
<Unit filename="CZipReader.h" /> <Unit filename="CZipReader.h" />
<Unit filename="EProfileIDs.h" />
<Unit filename="IAttribute.h" /> <Unit filename="IAttribute.h" />
<Unit filename="IBurningShader.cpp" /> <Unit filename="IBurningShader.cpp" />
<Unit filename="IBurningShader.h" /> <Unit filename="IBurningShader.h" />
......
...@@ -835,6 +835,7 @@ ...@@ -835,6 +835,7 @@
<ClInclude Include="..\..\include\EMaterialFlags.h" /> <ClInclude Include="..\..\include\EMaterialFlags.h" />
<ClInclude Include="..\..\include\IAnimatedMeshMD3.h" /> <ClInclude Include="..\..\include\IAnimatedMeshMD3.h" />
<ClInclude Include="..\..\include\IEventReceiver.h" /> <ClInclude Include="..\..\include\IEventReceiver.h" />
<ClInclude Include="..\..\include\CProfiler.h" />
<ClInclude Include="..\..\include\ILogger.h" /> <ClInclude Include="..\..\include\ILogger.h" />
<ClInclude Include="..\..\include\IOSOperator.h" /> <ClInclude Include="..\..\include\IOSOperator.h" />
<ClInclude Include="..\..\include\IRandomizer.h" /> <ClInclude Include="..\..\include\IRandomizer.h" />
...@@ -982,6 +983,7 @@ ...@@ -982,6 +983,7 @@
<ClInclude Include="..\..\include\IGUIInOutFader.h" /> <ClInclude Include="..\..\include\IGUIInOutFader.h" />
<ClInclude Include="..\..\include\IGUIListBox.h" /> <ClInclude Include="..\..\include\IGUIListBox.h" />
<ClInclude Include="..\..\include\IGUIMeshViewer.h" /> <ClInclude Include="..\..\include\IGUIMeshViewer.h" />
<ClInclude Include="..\..\include\IGUIProfiler.h" />
<ClInclude Include="..\..\include\IGUIScrollBar.h" /> <ClInclude Include="..\..\include\IGUIScrollBar.h" />
<ClInclude Include="..\..\include\IGUISkin.h" /> <ClInclude Include="..\..\include\IGUISkin.h" />
<ClInclude Include="..\..\include\IGUISpinBox.h" /> <ClInclude Include="..\..\include\IGUISpinBox.h" />
...@@ -1149,6 +1151,7 @@ ...@@ -1149,6 +1151,7 @@
<ClInclude Include="COSOperator.h" /> <ClInclude Include="COSOperator.h" />
<ClInclude Include="CTimer.h" /> <ClInclude Include="CTimer.h" />
<ClInclude Include="os.h" /> <ClInclude Include="os.h" />
<ClInclude Include="EProfileIDs.h" />
<ClInclude Include="lzma\LzmaDec.h" /> <ClInclude Include="lzma\LzmaDec.h" />
<ClInclude Include="lzma\Types.h" /> <ClInclude Include="lzma\Types.h" />
<ClInclude Include="zlib\crc32.h" /> <ClInclude Include="zlib\crc32.h" />
...@@ -1226,7 +1229,8 @@ ...@@ -1226,7 +1229,8 @@
<ClInclude Include="CGUIMeshViewer.h" /> <ClInclude Include="CGUIMeshViewer.h" />
<ClInclude Include="CGUIMessageBox.h" /> <ClInclude Include="CGUIMessageBox.h" />
<ClInclude Include="CGUIModalScreen.h" /> <ClInclude Include="CGUIModalScreen.h" />
<ClInclude Include="CGUIScrollBar.h" /> <ClInclude Include="CGUIProfiler.h" />
<ClInclude Include="CGUIScrollBar.h" />
<ClInclude Include="CGUISkin.h" /> <ClInclude Include="CGUISkin.h" />
<ClInclude Include="CGUISpinBox.h" /> <ClInclude Include="CGUISpinBox.h" />
<ClInclude Include="CGUISpriteBank.h" /> <ClInclude Include="CGUISpriteBank.h" />
...@@ -1413,6 +1417,7 @@ ...@@ -1413,6 +1417,7 @@
<ClCompile Include="Irrlicht.cpp" /> <ClCompile Include="Irrlicht.cpp" />
<ClCompile Include="leakHunter.cpp" /> <ClCompile Include="leakHunter.cpp" />
<ClCompile Include="os.cpp" /> <ClCompile Include="os.cpp" />
<ClCompile Include="CProfiler.cpp" />
<ClCompile Include="lzma\LzmaDec.c" /> <ClCompile Include="lzma\LzmaDec.c" />
<ClCompile Include="zlib\adler32.c" /> <ClCompile Include="zlib\adler32.c" />
<ClCompile Include="zlib\compress.c" /> <ClCompile Include="zlib\compress.c" />
...@@ -1542,7 +1547,8 @@ ...@@ -1542,7 +1547,8 @@
<ClCompile Include="CGUIMeshViewer.cpp" /> <ClCompile Include="CGUIMeshViewer.cpp" />
<ClCompile Include="CGUIMessageBox.cpp" /> <ClCompile Include="CGUIMessageBox.cpp" />
<ClCompile Include="CGUIModalScreen.cpp" /> <ClCompile Include="CGUIModalScreen.cpp" />
<ClCompile Include="CGUIScrollBar.cpp" /> <ClCompile Include="CGUIProfiler.cpp" />
<ClCompile Include="CGUIScrollBar.cpp" />
<ClCompile Include="CGUISkin.cpp" /> <ClCompile Include="CGUISkin.cpp" />
<ClCompile Include="CGUISpinBox.cpp" /> <ClCompile Include="CGUISpinBox.cpp" />
<ClCompile Include="CGUISpriteBank.cpp" /> <ClCompile Include="CGUISpriteBank.cpp" />
......
...@@ -105,7 +105,10 @@ ...@@ -105,7 +105,10 @@
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\include\IEventReceiver.h"> <ClInclude Include="..\..\include\IEventReceiver.h">
<Filter>include</Filter>
</ClInclude>
<ClInclude Include="..\..\include\CProfiler.h">
<Filter>include</Filter> <Filter>include</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\ILogger.h"> <ClInclude Include="..\..\include\ILogger.h">
...@@ -539,6 +542,9 @@ ...@@ -539,6 +542,9 @@
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\IGUIMeshViewer.h"> <ClInclude Include="..\..\include\IGUIMeshViewer.h">
<Filter>include\gui</Filter> <Filter>include\gui</Filter>
</ClInclude>
<ClInclude Include="..\..\include\IGUIProfiler.h">
<Filter>include\gui</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\IGUIScrollBar.h"> <ClInclude Include="..\..\include\IGUIScrollBar.h">
<Filter>include\gui</Filter> <Filter>include\gui</Filter>
...@@ -1022,6 +1028,9 @@ ...@@ -1022,6 +1028,9 @@
</ClInclude> </ClInclude>
<ClInclude Include="os.h"> <ClInclude Include="os.h">
<Filter>Irrlicht\irr</Filter> <Filter>Irrlicht\irr</Filter>
</ClInclude>
<ClInclude Include="EProfileIDs.h">
<Filter>Irrlicht\irr</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="lzma\LzmaDec.h"> <ClInclude Include="lzma\LzmaDec.h">
<Filter>Irrlicht\irr\extern</Filter> <Filter>Irrlicht\irr\extern</Filter>
...@@ -1254,7 +1263,10 @@ ...@@ -1254,7 +1263,10 @@
<ClInclude Include="CGUIModalScreen.h"> <ClInclude Include="CGUIModalScreen.h">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="CGUIScrollBar.h"> <ClInclude Include="CGUIProfiler.h">
<Filter>Irrlicht\gui</Filter>
</ClInclude>
<ClInclude Include="CGUIScrollBar.h">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="CGUISkin.h"> <ClInclude Include="CGUISkin.h">
...@@ -1822,6 +1834,9 @@ ...@@ -1822,6 +1834,9 @@
</ClCompile> </ClCompile>
<ClCompile Include="os.cpp"> <ClCompile Include="os.cpp">
<Filter>Irrlicht\irr</Filter> <Filter>Irrlicht\irr</Filter>
</ClCompile>
<ClCompile Include="CProfiler.cpp">
<Filter>Irrlicht\irr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="lzma\LzmaDec.c"> <ClCompile Include="lzma\LzmaDec.c">
<Filter>Irrlicht\irr\extern</Filter> <Filter>Irrlicht\irr\extern</Filter>
...@@ -2210,7 +2225,10 @@ ...@@ -2210,7 +2225,10 @@
<ClCompile Include="CGUIModalScreen.cpp"> <ClCompile Include="CGUIModalScreen.cpp">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CGUIScrollBar.cpp"> <ClCompile Include="CGUIProfiler.cpp">
<Filter>Irrlicht\gui</Filter>
</ClCompile>
<ClCompile Include="CGUIScrollBar.cpp">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CGUISkin.cpp"> <ClCompile Include="CGUISkin.cpp">
......
...@@ -842,6 +842,7 @@ ...@@ -842,6 +842,7 @@
<ClInclude Include="..\..\include\EMaterialFlags.h" /> <ClInclude Include="..\..\include\EMaterialFlags.h" />
<ClInclude Include="..\..\include\IAnimatedMeshMD3.h" /> <ClInclude Include="..\..\include\IAnimatedMeshMD3.h" />
<ClInclude Include="..\..\include\IEventReceiver.h" /> <ClInclude Include="..\..\include\IEventReceiver.h" />
<ClInclude Include="..\..\include\CProfiler.h" />
<ClInclude Include="..\..\include\ILogger.h" /> <ClInclude Include="..\..\include\ILogger.h" />
<ClInclude Include="..\..\include\IOSOperator.h" /> <ClInclude Include="..\..\include\IOSOperator.h" />
<ClInclude Include="..\..\include\IRandomizer.h" /> <ClInclude Include="..\..\include\IRandomizer.h" />
...@@ -989,6 +990,7 @@ ...@@ -989,6 +990,7 @@
<ClInclude Include="..\..\include\IGUIInOutFader.h" /> <ClInclude Include="..\..\include\IGUIInOutFader.h" />
<ClInclude Include="..\..\include\IGUIListBox.h" /> <ClInclude Include="..\..\include\IGUIListBox.h" />
<ClInclude Include="..\..\include\IGUIMeshViewer.h" /> <ClInclude Include="..\..\include\IGUIMeshViewer.h" />
<ClInclude Include="..\..\include\IGUIProfiler.h" />
<ClInclude Include="..\..\include\IGUIScrollBar.h" /> <ClInclude Include="..\..\include\IGUIScrollBar.h" />
<ClInclude Include="..\..\include\IGUISkin.h" /> <ClInclude Include="..\..\include\IGUISkin.h" />
<ClInclude Include="..\..\include\IGUISpinBox.h" /> <ClInclude Include="..\..\include\IGUISpinBox.h" />
...@@ -1156,6 +1158,7 @@ ...@@ -1156,6 +1158,7 @@
<ClInclude Include="COSOperator.h" /> <ClInclude Include="COSOperator.h" />
<ClInclude Include="CTimer.h" /> <ClInclude Include="CTimer.h" />
<ClInclude Include="os.h" /> <ClInclude Include="os.h" />
<ClInclude Include="EProfileIDs.h" />
<ClInclude Include="lzma\LzmaDec.h" /> <ClInclude Include="lzma\LzmaDec.h" />
<ClInclude Include="lzma\Types.h" /> <ClInclude Include="lzma\Types.h" />
<ClInclude Include="zlib\crc32.h" /> <ClInclude Include="zlib\crc32.h" />
...@@ -1233,7 +1236,8 @@ ...@@ -1233,7 +1236,8 @@
<ClInclude Include="CGUIMeshViewer.h" /> <ClInclude Include="CGUIMeshViewer.h" />
<ClInclude Include="CGUIMessageBox.h" /> <ClInclude Include="CGUIMessageBox.h" />
<ClInclude Include="CGUIModalScreen.h" /> <ClInclude Include="CGUIModalScreen.h" />
<ClInclude Include="CGUIScrollBar.h" /> <ClInclude Include="CGUIProfiler.h" />
<ClInclude Include="CGUIScrollBar.h" />
<ClInclude Include="CGUISkin.h" /> <ClInclude Include="CGUISkin.h" />
<ClInclude Include="CGUISpinBox.h" /> <ClInclude Include="CGUISpinBox.h" />
<ClInclude Include="CGUISpriteBank.h" /> <ClInclude Include="CGUISpriteBank.h" />
...@@ -1419,6 +1423,7 @@ ...@@ -1419,6 +1423,7 @@
<ClCompile Include="COSOperator.cpp" /> <ClCompile Include="COSOperator.cpp" />
<ClCompile Include="Irrlicht.cpp" /> <ClCompile Include="Irrlicht.cpp" />
<ClCompile Include="os.cpp" /> <ClCompile Include="os.cpp" />
<ClCompile Include="CProfiler.cpp" />
<ClCompile Include="leakHunter.cpp" /> <ClCompile Include="leakHunter.cpp" />
<ClCompile Include="lzma\LzmaDec.c" /> <ClCompile Include="lzma\LzmaDec.c" />
<ClCompile Include="zlib\adler32.c" /> <ClCompile Include="zlib\adler32.c" />
...@@ -1549,7 +1554,8 @@ ...@@ -1549,7 +1554,8 @@
<ClCompile Include="CGUIMeshViewer.cpp" /> <ClCompile Include="CGUIMeshViewer.cpp" />
<ClCompile Include="CGUIMessageBox.cpp" /> <ClCompile Include="CGUIMessageBox.cpp" />
<ClCompile Include="CGUIModalScreen.cpp" /> <ClCompile Include="CGUIModalScreen.cpp" />
<ClCompile Include="CGUIScrollBar.cpp" /> <ClCompile Include="CGUIProfiler.cpp" />
<ClCompile Include="CGUIScrollBar.cpp" />
<ClCompile Include="CGUISkin.cpp" /> <ClCompile Include="CGUISkin.cpp" />
<ClCompile Include="CGUISpinBox.cpp" /> <ClCompile Include="CGUISpinBox.cpp" />
<ClCompile Include="CGUISpriteBank.cpp" /> <ClCompile Include="CGUISpriteBank.cpp" />
......
...@@ -107,6 +107,9 @@ ...@@ -107,6 +107,9 @@
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\include\IEventReceiver.h"> <ClInclude Include="..\..\include\IEventReceiver.h">
<Filter>include</Filter> <Filter>include</Filter>
</ClInclude>
<ClInclude Include="..\..\include\CProfiler.h">
<Filter>include</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\ILogger.h"> <ClInclude Include="..\..\include\ILogger.h">
<Filter>include</Filter> <Filter>include</Filter>
...@@ -542,6 +545,9 @@ ...@@ -542,6 +545,9 @@
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\IGUIMeshViewer.h"> <ClInclude Include="..\..\include\IGUIMeshViewer.h">
<Filter>include\gui</Filter> <Filter>include\gui</Filter>
</ClInclude>
<ClInclude Include="..\..\include\IGUIProfiler.h">
<Filter>include\gui</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\include\IGUIScrollBar.h"> <ClInclude Include="..\..\include\IGUIScrollBar.h">
<Filter>include\gui</Filter> <Filter>include\gui</Filter>
...@@ -1025,6 +1031,9 @@ ...@@ -1025,6 +1031,9 @@
</ClInclude> </ClInclude>
<ClInclude Include="os.h"> <ClInclude Include="os.h">
<Filter>Irrlicht\irr</Filter> <Filter>Irrlicht\irr</Filter>
</ClInclude>
<ClInclude Include="EProfileIDs.h">
<Filter>Irrlicht\irr</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="lzma\LzmaDec.h"> <ClInclude Include="lzma\LzmaDec.h">
<Filter>Irrlicht\irr\extern</Filter> <Filter>Irrlicht\irr\extern</Filter>
...@@ -1257,7 +1266,10 @@ ...@@ -1257,7 +1266,10 @@
<ClInclude Include="CGUIModalScreen.h"> <ClInclude Include="CGUIModalScreen.h">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="CGUIScrollBar.h"> <ClInclude Include="CGUIProfiler.h">
<Filter>Irrlicht\gui</Filter>
</ClInclude>
<ClInclude Include="CGUIScrollBar.h">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="CGUISkin.h"> <ClInclude Include="CGUISkin.h">
...@@ -1822,6 +1834,9 @@ ...@@ -1822,6 +1834,9 @@
</ClCompile> </ClCompile>
<ClCompile Include="os.cpp"> <ClCompile Include="os.cpp">
<Filter>Irrlicht\irr</Filter> <Filter>Irrlicht\irr</Filter>
</ClCompile>
<ClCompile Include="CProfiler.cpp">
<Filter>Irrlicht\irr</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="leakHunter.cpp"> <ClCompile Include="leakHunter.cpp">
<Filter>Irrlicht\irr</Filter> <Filter>Irrlicht\irr</Filter>
...@@ -2213,7 +2228,10 @@ ...@@ -2213,7 +2228,10 @@
<ClCompile Include="CGUIModalScreen.cpp"> <ClCompile Include="CGUIModalScreen.cpp">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CGUIScrollBar.cpp"> <ClCompile Include="CGUIProfiler.cpp">
<Filter>Irrlicht\gui</Filter>
</ClCompile>
<ClCompile Include="CGUIScrollBar.cpp">
<Filter>Irrlicht\gui</Filter> <Filter>Irrlicht\gui</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CGUISkin.cpp"> <ClCompile Include="CGUISkin.cpp">
......
...@@ -586,6 +586,10 @@ ...@@ -586,6 +586,10 @@
RelativePath=".\..\..\include\IEventReceiver.h" RelativePath=".\..\..\include\IEventReceiver.h"
> >
</File> </File>
<File
RelativePath=".\..\..\include\CProfiler.h"
>
</File>
<File <File
RelativePath=".\..\..\include\ILogger.h" RelativePath=".\..\..\include\ILogger.h"
> >
...@@ -1198,6 +1202,10 @@ ...@@ -1198,6 +1202,10 @@
RelativePath=".\..\..\include\IGUIMeshViewer.h" RelativePath=".\..\..\include\IGUIMeshViewer.h"
> >
</File> </File>
<File
RelativePath=".\..\..\include\IGUIProfiler.h"
>
</File>
<File <File
RelativePath=".\..\..\include\IGUIScrollBar.h" RelativePath=".\..\..\include\IGUIScrollBar.h"
> >
...@@ -1391,6 +1399,14 @@ ...@@ -1391,6 +1399,14 @@
RelativePath="CGUIModalScreen.h" RelativePath="CGUIModalScreen.h"
> >
</File> </File>
<File
RelativePath=".\CGUIProfiler.cpp"
>
</File>
<File
RelativePath=".\CGUIProfiler.h"
>
</File>
<File <File
RelativePath=".\CGUIScrollBar.cpp" RelativePath=".\CGUIScrollBar.cpp"
> >
...@@ -3001,6 +3017,14 @@ ...@@ -3001,6 +3017,14 @@
RelativePath="os.cpp" RelativePath="os.cpp"
> >
</File> </File>
<File
RelativePath="CProfiler.cpp"
>
</File>
<File
RelativePath="EProfileIDs.h"
>
</File>
<File <File
RelativePath="leakHunter.cpp" RelativePath="leakHunter.cpp"
> >
......
...@@ -685,6 +685,10 @@ ...@@ -685,6 +685,10 @@
RelativePath="..\..\include\IEventReceiver.h" RelativePath="..\..\include\IEventReceiver.h"
> >
</File> </File>
<File
RelativePath="..\..\include\CProfiler.h"
>
</File>
<File <File
RelativePath="..\..\include\ILogger.h" RelativePath="..\..\include\ILogger.h"
> >
...@@ -1296,6 +1300,10 @@ ...@@ -1296,6 +1300,10 @@
RelativePath="..\..\include\IGUIMeshViewer.h" RelativePath="..\..\include\IGUIMeshViewer.h"
> >
</File> </File>
<File
RelativePath="..\..\include\IGUIProfiler.h"
>
</File>
<File <File
RelativePath="..\..\include\IGUIScrollBar.h" RelativePath="..\..\include\IGUIScrollBar.h"
> >
...@@ -2728,6 +2736,14 @@ ...@@ -2728,6 +2736,14 @@
RelativePath="os.cpp" RelativePath="os.cpp"
> >
</File> </File>
<File
RelativePath="CProfiler.cpp"
>
</File>
<File
RelativePath="EProfileIDs.h"
>
</File>
<File <File
RelativePath="os.h" RelativePath="os.h"
> >
...@@ -3592,6 +3608,14 @@ ...@@ -3592,6 +3608,14 @@
RelativePath="CGUIModalScreen.h" RelativePath="CGUIModalScreen.h"
> >
</File> </File>
<File
RelativePath="CGUIProfiler.cpp"
>
</File>
<File
RelativePath="CGUIProfiler.h"
>
</File>
<File <File
RelativePath="CGUIScrollBar.cpp" RelativePath="CGUIScrollBar.cpp"
> >
......
...@@ -329,6 +329,10 @@ ...@@ -329,6 +329,10 @@
RelativePath="..\..\include\IEventReceiver.h" RelativePath="..\..\include\IEventReceiver.h"
> >
</File> </File>
<File
RelativePath="..\..\include\CProfiler.h"
>
</File>
<File <File
RelativePath="..\..\include\ILogger.h" RelativePath="..\..\include\ILogger.h"
> >
...@@ -848,6 +852,10 @@ ...@@ -848,6 +852,10 @@
RelativePath="..\..\include\IGUIMeshViewer.h" RelativePath="..\..\include\IGUIMeshViewer.h"
> >
</File> </File>
<File
RelativePath="..\..\include\IGUIProfiler.h"
>
</File>
<File <File
RelativePath="..\..\include\IGUIScrollBar.h" RelativePath="..\..\include\IGUIScrollBar.h"
> >
...@@ -1033,6 +1041,14 @@ ...@@ -1033,6 +1041,14 @@
RelativePath="CGUIModalScreen.h" RelativePath="CGUIModalScreen.h"
> >
</File> </File>
<File
RelativePath="CGUIProfiler.cpp"
>
</File>
<File
RelativePath="CGUIProfiler.h"
>
</File>
<File <File
RelativePath="CGUIScrollBar.cpp" RelativePath="CGUIScrollBar.cpp"
> >
...@@ -2574,6 +2590,14 @@ ...@@ -2574,6 +2590,14 @@
RelativePath="os.cpp" RelativePath="os.cpp"
> >
</File> </File>
<File
RelativePath="CProfiler.cpp"
>
</File>
<File
RelativePath="EProfileIDs.h"
>
</File>
<File <File
RelativePath="leakHunter.cpp" RelativePath="leakHunter.cpp"
> >
......
...@@ -309,6 +309,9 @@ ...@@ -309,6 +309,9 @@
<File <File
RelativePath="..\..\include\IEventReceiver.h"> RelativePath="..\..\include\IEventReceiver.h">
</File> </File>
<File
RelativePath="..\..\include\CProfiler.h">
</File>
<File <File
RelativePath="..\..\include\IFileArchive.h"> RelativePath="..\..\include\IFileArchive.h">
</File> </File>
...@@ -372,6 +375,9 @@ ...@@ -372,6 +375,9 @@
<File <File
RelativePath="..\..\include\IGUIMeshViewer.h"> RelativePath="..\..\include\IGUIMeshViewer.h">
</File> </File>
<File
RelativePath="..\..\include\IGUIProfiler.h">
</File>
<File <File
RelativePath="..\..\include\IGUIScrollBar.h"> RelativePath="..\..\include\IGUIScrollBar.h">
</File> </File>
...@@ -1434,6 +1440,12 @@ ...@@ -1434,6 +1440,12 @@
<File <File
RelativePath=".\os.cpp"> RelativePath=".\os.cpp">
</File> </File>
<File
RelativePath=".\CProfiler.cpp">
</File>
<File
RelativePath=".\EProfileIDs.h">
</File>
<File <File
RelativePath=".\leakHunter.cpp"> RelativePath=".\leakHunter.cpp">
</File> </File>
...@@ -1837,6 +1849,12 @@ ...@@ -1837,6 +1849,12 @@
<File <File
RelativePath=".\CGUIModalScreen.h"> RelativePath=".\CGUIModalScreen.h">
</File> </File>
<File
RelativePath=".\CGUIProfiler.cpp">
</File>
<File
RelativePath=".\CGUIProfiler.h">
</File>
<File <File
RelativePath=".\CGUIScrollBar.cpp"> RelativePath=".\CGUIScrollBar.cpp">
</File> </File>
......
...@@ -44,8 +44,8 @@ IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o CImageLoaderDDS.o CIm ...@@ -44,8 +44,8 @@ IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o CImageLoaderDDS.o CIm
IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ) IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ)
IRRSWRENDEROBJ = CSoftwareDriver.o CSoftwareTexture.o CTRFlat.o CTRFlatWire.o CTRGouraud.o CTRGouraudWire.o CTRNormalMap.o CTRStencilShadow.o CTRTextureFlat.o CTRTextureFlatWire.o CTRTextureGouraud.o CTRTextureGouraudAdd.o CTRTextureGouraudNoZ.o CTRTextureGouraudWire.o CZBuffer.o CTRTextureGouraudVertexAlpha2.o CTRTextureGouraudNoZ2.o CTRTextureLightMap2_M2.o CTRTextureLightMap2_M4.o CTRTextureLightMap2_M1.o CSoftwareDriver2.o CSoftwareTexture2.o CTRTextureGouraud2.o CTRGouraud2.o CTRGouraudAlpha2.o CTRGouraudAlphaNoZ2.o CTRTextureDetailMap2.o CTRTextureGouraudAdd2.o CTRTextureGouraudAddNoZ2.o CTRTextureWire2.o CTRTextureLightMap2_Add.o CTRTextureLightMapGouraud2_M4.o IBurningShader.o CTRTextureBlend.o CTRTextureGouraudAlpha.o CTRTextureGouraudAlphaNoZ.o CDepthBuffer.o CBurningShader_Raster_Reference.o IRRSWRENDEROBJ = CSoftwareDriver.o CSoftwareTexture.o CTRFlat.o CTRFlatWire.o CTRGouraud.o CTRGouraudWire.o CTRNormalMap.o CTRStencilShadow.o CTRTextureFlat.o CTRTextureFlatWire.o CTRTextureGouraud.o CTRTextureGouraudAdd.o CTRTextureGouraudNoZ.o CTRTextureGouraudWire.o CZBuffer.o CTRTextureGouraudVertexAlpha2.o CTRTextureGouraudNoZ2.o CTRTextureLightMap2_M2.o CTRTextureLightMap2_M4.o CTRTextureLightMap2_M1.o CSoftwareDriver2.o CSoftwareTexture2.o CTRTextureGouraud2.o CTRGouraud2.o CTRGouraudAlpha2.o CTRGouraudAlphaNoZ2.o CTRTextureDetailMap2.o CTRTextureGouraudAdd2.o CTRTextureGouraudAddNoZ2.o CTRTextureWire2.o CTRTextureLightMap2_Add.o CTRTextureLightMapGouraud2_M4.o IBurningShader.o CTRTextureBlend.o CTRTextureGouraudAlpha.o CTRTextureGouraudAlphaNoZ.o CDepthBuffer.o CBurningShader_Raster_Reference.o
IRRIOOBJ = CFileList.o CFileSystem.o CLimitReadFile.o CMemoryFile.o CReadFile.o CWriteFile.o CXMLReader.o CXMLWriter.o CWADReader.o CZipReader.o CPakReader.o CNPKReader.o CTarReader.o CMountPointReader.o irrXML.o CAttributes.o lzma/LzmaDec.o IRRIOOBJ = CFileList.o CFileSystem.o CLimitReadFile.o CMemoryFile.o CReadFile.o CWriteFile.o CXMLReader.o CXMLWriter.o CWADReader.o CZipReader.o CPakReader.o CNPKReader.o CTarReader.o CMountPointReader.o irrXML.o CAttributes.o lzma/LzmaDec.o
IRROTHEROBJ = CIrrDeviceSDL.o CIrrDeviceLinux.o CIrrDeviceConsole.o CIrrDeviceStub.o CIrrDeviceWin32.o CIrrDeviceFB.o CLogger.o COSOperator.o Irrlicht.o os.o leakHunter.o IRROTHEROBJ = CIrrDeviceSDL.o CIrrDeviceLinux.o CIrrDeviceConsole.o CIrrDeviceStub.o CIrrDeviceWin32.o CIrrDeviceFB.o CLogger.o COSOperator.o Irrlicht.o os.o leakHunter.o CProfiler.o
IRRGUIOBJ = CGUIButton.o CGUICheckBox.o CGUIComboBox.o CGUIContextMenu.o CGUIEditBox.o CGUIEnvironment.o CGUIFileOpenDialog.o CGUIFont.o CGUIImage.o CGUIInOutFader.o CGUIListBox.o CGUIMenu.o CGUIMeshViewer.o CGUIMessageBox.o CGUIModalScreen.o CGUIScrollBar.o CGUISpinBox.o CGUISkin.o CGUIStaticText.o CGUITabControl.o CGUITable.o CGUIToolBar.o CGUIWindow.o CGUIColorSelectDialog.o CDefaultGUIElementFactory.o CGUISpriteBank.o CGUIImageList.o CGUITreeView.o IRRGUIOBJ = CGUIButton.o CGUICheckBox.o CGUIComboBox.o CGUIContextMenu.o CGUIEditBox.o CGUIEnvironment.o CGUIFileOpenDialog.o CGUIFont.o CGUIImage.o CGUIInOutFader.o CGUIListBox.o CGUIMenu.o CGUIMeshViewer.o CGUIMessageBox.o CGUIModalScreen.o CGUIScrollBar.o CGUISpinBox.o CGUISkin.o CGUIStaticText.o CGUITabControl.o CGUITable.o CGUIToolBar.o CGUIWindow.o CGUIColorSelectDialog.o CDefaultGUIElementFactory.o CGUISpriteBank.o CGUIImageList.o CGUITreeView.o CGUIProfiler.o
ZLIBOBJ = zlib/adler32.o zlib/compress.o zlib/crc32.o zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o zlib/uncompr.o zlib/zutil.o ZLIBOBJ = zlib/adler32.o zlib/compress.o zlib/crc32.o zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o zlib/uncompr.o zlib/zutil.o
JPEGLIBOBJ = jpeglib/jcapimin.o jpeglib/jcapistd.o jpeglib/jccoefct.o jpeglib/jccolor.o jpeglib/jcdctmgr.o jpeglib/jchuff.o jpeglib/jcinit.o jpeglib/jcmainct.o jpeglib/jcmarker.o jpeglib/jcmaster.o jpeglib/jcomapi.o jpeglib/jcparam.o jpeglib/jcprepct.o jpeglib/jcsample.o jpeglib/jctrans.o jpeglib/jdapimin.o jpeglib/jdapistd.o jpeglib/jdatadst.o jpeglib/jdatasrc.o jpeglib/jdcoefct.o jpeglib/jdcolor.o jpeglib/jddctmgr.o jpeglib/jdhuff.o jpeglib/jdinput.o jpeglib/jdmainct.o jpeglib/jdmarker.o jpeglib/jdmaster.o jpeglib/jdmerge.o jpeglib/jdpostct.o jpeglib/jdsample.o jpeglib/jdtrans.o jpeglib/jerror.o jpeglib/jfdctflt.o jpeglib/jfdctfst.o jpeglib/jfdctint.o jpeglib/jidctflt.o jpeglib/jidctfst.o jpeglib/jidctint.o jpeglib/jmemmgr.o jpeglib/jmemnobs.o jpeglib/jquant1.o jpeglib/jquant2.o jpeglib/jutils.o jpeglib/jcarith.o jpeglib/jdarith.o jpeglib/jaricom.o JPEGLIBOBJ = jpeglib/jcapimin.o jpeglib/jcapistd.o jpeglib/jccoefct.o jpeglib/jccolor.o jpeglib/jcdctmgr.o jpeglib/jchuff.o jpeglib/jcinit.o jpeglib/jcmainct.o jpeglib/jcmarker.o jpeglib/jcmaster.o jpeglib/jcomapi.o jpeglib/jcparam.o jpeglib/jcprepct.o jpeglib/jcsample.o jpeglib/jctrans.o jpeglib/jdapimin.o jpeglib/jdapistd.o jpeglib/jdatadst.o jpeglib/jdatasrc.o jpeglib/jdcoefct.o jpeglib/jdcolor.o jpeglib/jddctmgr.o jpeglib/jdhuff.o jpeglib/jdinput.o jpeglib/jdmainct.o jpeglib/jdmarker.o jpeglib/jdmaster.o jpeglib/jdmerge.o jpeglib/jdpostct.o jpeglib/jdsample.o jpeglib/jdtrans.o jpeglib/jerror.o jpeglib/jfdctflt.o jpeglib/jfdctfst.o jpeglib/jfdctint.o jpeglib/jidctflt.o jpeglib/jidctfst.o jpeglib/jidctint.o jpeglib/jmemmgr.o jpeglib/jmemnobs.o jpeglib/jquant1.o jpeglib/jquant2.o jpeglib/jutils.o jpeglib/jcarith.o jpeglib/jdarith.o jpeglib/jaricom.o
LIBPNGOBJ = libpng/png.o libpng/pngerror.o libpng/pngget.o libpng/pngmem.o libpng/pngpread.o libpng/pngread.o libpng/pngrio.o libpng/pngrtran.o libpng/pngrutil.o libpng/pngset.o libpng/pngtrans.o libpng/pngwio.o libpng/pngwrite.o libpng/pngwtran.o libpng/pngwutil.o LIBPNGOBJ = libpng/png.o libpng/pngerror.o libpng/pngget.o libpng/pngmem.o libpng/pngpread.o libpng/pngread.o libpng/pngrio.o libpng/pngrtran.o libpng/pngrutil.o libpng/pngset.o libpng/pngtrans.o libpng/pngwio.o libpng/pngwrite.o libpng/pngwtran.o libpng/pngwutil.o
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment