public class FPSCounter extends Behavior
The HotSpot(tm) compiler performs some initial optimizations before running at optimal speed. Frame rates measured during this warmup period will be inaccurate and not indicative of the true performance of the the application. Therefore, before beginning the frame rate computation, the frame counter waits for a fixed time period to allow the HotSpot(tm) compiler to stablilize.
To avoid computing the frame rate too frequently (which would also hamper rendering performance), the frame counter only computes the frame rate at fixed time intervals. The default sampling duration is 10 seconds. After waiting for the warmup period, the frame counter needs to calibrate itself. It computes the number of frames rendered during the sampling period. After doing this calibration, the frame counter reports the frame rate after these many frames are rendered. It also reports the average frame rate after a fixed number of sampling intervals (the default is 5).
The frame counter can be set up to run for a fixed number of sampling intervals or to run indefinitely. The defaultis to run indefinitely.
ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_LOCALE_READ, ALLOW_PARENT_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING
Constructor and Description |
---|
FPSCounter() |
Modifier and Type | Method and Description |
---|---|
void |
initialize()
Called to init the behavior
|
void |
processStimulus(java.util.Iterator<WakeupCriterion> critera)
Called every time the behavior is activated
|
void |
setLoopCount(int lc)
Sets the number of sampling intervals to wait for before computing
the average frame rate.
|
void |
setMaxLoops(int ml)
This method sets the number of sampling intervals for which
the frame counter should run.
|
void |
setWarmupTime(long wt)
The frame counter waits for some time before computing the
frame rate.
|
getEnable, getNumSchedulingIntervals, getSchedulingBoundingLeaf, getSchedulingBounds, getSchedulingInterval, postId, setEnable, setSchedulingBoundingLeaf, setSchedulingBounds, setSchedulingInterval, updateNodeReferences
cloneNode, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, duplicateNode, getBounds, getBoundsAutoCompute, getCollidable, getLocale, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable
clearCapability, clearCapabilityIsFrequent, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString
public void initialize()
initialize
in class Behavior
public void processStimulus(java.util.Iterator<WakeupCriterion> critera)
processStimulus
in class Behavior
critera
- an iterator of triggered wakeup criteria for this
behaviorpublic void setWarmupTime(long wt)
amount
- of time to wait for before computing frame rate
(specified in milliseconds)public void setLoopCount(int lc)
number
- of sampling intervals over which to compute frame rate.
A value of 0 implies the average frame rate is computed over one
sampling intervalpublic void setMaxLoops(int ml)
number
- of sampling intervals to run for