gfxDeviceStatistics.cpp
Engine/source/gfx/gfxDeviceStatistics.cpp
Detailed Description
1 2//----------------------------------------------------------------------------- 3// Copyright (c) 2012 GarageGames, LLC 4// 5// Permission is hereby granted, free of charge, to any person obtaining a copy 6// of this software and associated documentation files (the "Software"), to 7// deal in the Software without restriction, including without limitation the 8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9// sell copies of the Software, and to permit persons to whom the Software is 10// furnished to do so, subject to the following conditions: 11// 12// The above copyright notice and this permission notice shall be included in 13// all copies or substantial portions of the Software. 14// 15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21// IN THE SOFTWARE. 22//----------------------------------------------------------------------------- 23 24#include "gfx/gfxDeviceStatistics.h" 25#include "platform/platform.h" 26#include "console/console.h" 27 28GFXDeviceStatistics::GFXDeviceStatistics() 29{ 30 clear(); 31} 32 33void GFXDeviceStatistics::setPrefix(const String& prefix) 34{ 35 // This is a bit silly, but we don't want to construct these 36 // strings every frame. 37 vnPolyCount = prefix + "polyCount"; 38 vnDrawCalls = prefix + "drawCalls"; 39 vnRenderTargetChanges = prefix + "renderTargetChanges"; 40} 41 42/// Clear stats 43void GFXDeviceStatistics::clear() 44{ 45 mPolyCount = 0; 46 mDrawCalls = 0; 47 mRenderTargetChanges = 0; 48} 49 50/// Copy from source (should just be a memcpy, but that may change later) used in 51/// conjunction with end to get a subset of statistics. For example, statistics 52/// for a particular render bin. 53void GFXDeviceStatistics::start(GFXDeviceStatistics * source) 54{ 55 mPolyCount = source->mPolyCount; 56 mDrawCalls = source->mDrawCalls; 57 mRenderTargetChanges = source->mRenderTargetChanges; 58} 59 60/// Used with start to get a subset of stats on a device. Basically will do 61/// this->mPolyCount = source->mPolyCount - this->mPolyCount. (Fancy!) 62void GFXDeviceStatistics::end(GFXDeviceStatistics * source) 63{ 64 mPolyCount = source->mPolyCount - mPolyCount; 65 mDrawCalls = source->mDrawCalls - mDrawCalls; 66 mRenderTargetChanges = source->mRenderTargetChanges - mRenderTargetChanges; 67} 68 69/// Exports the stats to the console 70void GFXDeviceStatistics::exportToConsole() 71{ 72 Con::setIntVariable(vnPolyCount, mPolyCount); 73 Con::setIntVariable(vnDrawCalls, mDrawCalls); 74 Con::setIntVariable(vnRenderTargetChanges, mRenderTargetChanges); 75} 76