uncrustify
This commit is contained in:
parent
0b8fb261fa
commit
fa1d70e6a5
4 changed files with 189 additions and 178 deletions
|
@ -6,7 +6,7 @@
|
||||||
################################################################################
|
################################################################################
|
||||||
# OF ROOT
|
# OF ROOT
|
||||||
# The location of your root openFrameworks installation
|
# The location of your root openFrameworks installation
|
||||||
# (default) OF_ROOT = ../../..
|
# (default) OF_ROOT = ../../..
|
||||||
################################################################################
|
################################################################################
|
||||||
# OF_ROOT = ../../..
|
# OF_ROOT = ../../..
|
||||||
|
|
||||||
|
@ -14,39 +14,39 @@
|
||||||
# PROJECT ROOT
|
# PROJECT ROOT
|
||||||
# The location of the project - a starting place for searching for files
|
# The location of the project - a starting place for searching for files
|
||||||
# (default) PROJECT_ROOT = . (this directory)
|
# (default) PROJECT_ROOT = . (this directory)
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT_ROOT = .
|
# PROJECT_ROOT = .
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT SPECIFIC CHECKS
|
# PROJECT SPECIFIC CHECKS
|
||||||
# This is a project defined section to create internal makefile flags to
|
# This is a project defined section to create internal makefile flags to
|
||||||
# conditionally enable or disable the addition of various features within
|
# conditionally enable or disable the addition of various features within
|
||||||
# this makefile. For instance, if you want to make changes based on whether
|
# this makefile. For instance, if you want to make changes based on whether
|
||||||
# GTK is installed, one might test that here and create a variable to check.
|
# GTK is installed, one might test that here and create a variable to check.
|
||||||
################################################################################
|
################################################################################
|
||||||
# None
|
# None
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT EXTERNAL SOURCE PATHS
|
# PROJECT EXTERNAL SOURCE PATHS
|
||||||
# These are fully qualified paths that are not within the PROJECT_ROOT folder.
|
# These are fully qualified paths that are not within the PROJECT_ROOT folder.
|
||||||
# Like source folders in the PROJECT_ROOT, these paths are subject to
|
# Like source folders in the PROJECT_ROOT, these paths are subject to
|
||||||
# exlclusion via the PROJECT_EXLCUSIONS list.
|
# exlclusion via the PROJECT_EXLCUSIONS list.
|
||||||
#
|
#
|
||||||
# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
|
# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
|
||||||
#
|
#
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
# Note: Leave a leading space when adding list items with the += operator
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT_EXTERNAL_SOURCE_PATHS =
|
# PROJECT_EXTERNAL_SOURCE_PATHS =
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT EXCLUSIONS
|
# PROJECT EXCLUSIONS
|
||||||
# These makefiles assume that all folders in your current project directory
|
# These makefiles assume that all folders in your current project directory
|
||||||
# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
|
# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
|
||||||
# to look for source code. The any folders or files that match any of the
|
# to look for source code. The any folders or files that match any of the
|
||||||
# items in the PROJECT_EXCLUSIONS list below will be ignored.
|
# items in the PROJECT_EXCLUSIONS list below will be ignored.
|
||||||
#
|
#
|
||||||
# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
|
# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
|
||||||
# string unless teh user adds a wildcard (%) operator to match subdirectories.
|
# string unless teh user adds a wildcard (%) operator to match subdirectories.
|
||||||
# GNU make only allows one wildcard for matching. The second wildcard (%) is
|
# GNU make only allows one wildcard for matching. The second wildcard (%) is
|
||||||
# treated literally.
|
# treated literally.
|
||||||
|
@ -71,45 +71,46 @@
|
||||||
#
|
#
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
# Note: Leave a leading space when adding list items with the += operator
|
||||||
#
|
#
|
||||||
# Currently, shared libraries that are needed are copied to the
|
# Currently, shared libraries that are needed are copied to the
|
||||||
# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
|
# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
|
||||||
# add a runtime path to search for those shared libraries, since they aren't
|
# add a runtime path to search for those shared libraries, since they aren't
|
||||||
# incorporated directly into the final executable application binary.
|
# incorporated directly into the final executable application binary.
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT_LDFLAGS=-Wl,-rpath=./libs
|
# PROJECT_LDFLAGS=-Wl,-rpath=./libs
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT DEFINES
|
# PROJECT DEFINES
|
||||||
# Create a space-delimited list of DEFINES. The list will be converted into
|
# Create a space-delimited list of DEFINES. The list will be converted into
|
||||||
# CFLAGS with the "-D" flag later in the makefile.
|
# CFLAGS with the "-D" flag later in the makefile.
|
||||||
#
|
#
|
||||||
# (default) PROJECT_DEFINES = (blank)
|
# (default) PROJECT_DEFINES = (blank)
|
||||||
#
|
#
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
# Note: Leave a leading space when adding list items with the += operator
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT_DEFINES =
|
# PROJECT_DEFINES =
|
||||||
|
PROJECT_DEFINES = OFX_PROFILER=1
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT CFLAGS
|
# PROJECT CFLAGS
|
||||||
# This is a list of fully qualified CFLAGS required when compiling for this
|
# This is a list of fully qualified CFLAGS required when compiling for this
|
||||||
# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
|
# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
|
||||||
# defined in your platform specific core configuration files. These flags are
|
# defined in your platform specific core configuration files. These flags are
|
||||||
# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
|
# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
|
||||||
#
|
#
|
||||||
# (default) PROJECT_CFLAGS = (blank)
|
# (default) PROJECT_CFLAGS = (blank)
|
||||||
#
|
#
|
||||||
# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
|
# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
|
||||||
# your platform specific configuration file will be applied by default and
|
# your platform specific configuration file will be applied by default and
|
||||||
# further flags here may not be needed.
|
# further flags here may not be needed.
|
||||||
#
|
#
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
# Note: Leave a leading space when adding list items with the += operator
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT_CFLAGS =
|
# PROJECT_CFLAGS =
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT OPTIMIZATION CFLAGS
|
# PROJECT OPTIMIZATION CFLAGS
|
||||||
# These are lists of CFLAGS that are target-specific. While any flags could
|
# These are lists of CFLAGS that are target-specific. While any flags could
|
||||||
# be conditionally added, they are usually limited to optimization flags.
|
# be conditionally added, they are usually limited to optimization flags.
|
||||||
# These flags are added BEFORE the PROJECT_CFLAGS.
|
# These flags are added BEFORE the PROJECT_CFLAGS.
|
||||||
#
|
#
|
||||||
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
|
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
|
||||||
|
@ -120,15 +121,15 @@
|
||||||
#
|
#
|
||||||
# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
|
# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
|
||||||
#
|
#
|
||||||
# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
|
# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
|
||||||
# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
|
# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
|
||||||
# file will be applied by default and further optimization flags here may not
|
# file will be applied by default and further optimization flags here may not
|
||||||
# be needed.
|
# be needed.
|
||||||
#
|
#
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
# Note: Leave a leading space when adding list items with the += operator
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
|
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
|
||||||
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
|
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT COMPILERS
|
# PROJECT COMPILERS
|
||||||
|
@ -137,5 +138,5 @@
|
||||||
# (default) PROJECT_CC = (blank)
|
# (default) PROJECT_CC = (blank)
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
# Note: Leave a leading space when adding list items with the += operator
|
||||||
################################################################################
|
################################################################################
|
||||||
# PROJECT_CXX =
|
# PROJECT_CXX =
|
||||||
# PROJECT_CC =
|
# PROJECT_CC =
|
||||||
|
|
|
@ -1,159 +1,172 @@
|
||||||
#include "ofApp.h"
|
#include "ofApp.h"
|
||||||
|
#include "ofAppRunner.h"
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::setup() {
|
void ofApp::setup(){
|
||||||
OFX_PROFILER_BEGIN_SESSION("test","result.json");
|
OFX_PROFILER_BEGIN_SESSION("test", "result.json");
|
||||||
OFX_PROFILER_FUNCTION();
|
OFX_PROFILER_FUNCTION();
|
||||||
|
|
||||||
ofBackgroundHex(0x57554c);
|
ofBackgroundHex(0x57554c);
|
||||||
ofSetFrameRate(60);
|
//ofSetFrameRate(60);
|
||||||
ofSetVerticalSync(true);
|
ofSetVerticalSync(true);
|
||||||
|
|
||||||
|
|
||||||
// slow = 1
|
// slow = 1
|
||||||
// faster = 2
|
// faster = 2
|
||||||
// super fast = 3
|
// super fast = 3
|
||||||
mode = 1;
|
mode = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::update() {
|
void ofApp::update(){
|
||||||
OFX_PROFILER_FUNCTION();
|
OFX_PROFILER_FUNCTION();
|
||||||
// add points all the time
|
// add points all the time
|
||||||
if(points.size() < 500000) {
|
if(points.size() < 500000 || ofGetFrameRate() > 30){
|
||||||
for (int i=0; i<30; i++) {
|
for(int i = 0; i < 300; i++){
|
||||||
addPoint(ofGetWidth()/2, ofGetHeight()/2);
|
addPoint(ofGetWidth() / 2, ofGetHeight() / 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// move all the points around
|
// move all the points around
|
||||||
for (unsigned int i=0; i<points.size(); i++) {
|
for(unsigned int i = 0; i < points.size(); i++){
|
||||||
|
|
||||||
speeds[i].y += 0.04; // some grav
|
speeds[i].y += 0.04; // some grav
|
||||||
points[i] += speeds[i];
|
points[i] += speeds[i];
|
||||||
speeds[i] *= 0.98;
|
speeds[i] *= 0.98;
|
||||||
|
|
||||||
// move from the mouse
|
// move from the mouse
|
||||||
glm::vec2 mouseVec = glm::vec2(ofGetMouseX(), ofGetMouseY()) - points[i];
|
glm::vec2 mouseVec = glm::vec2(ofGetMouseX(), ofGetMouseY()) - points[i];
|
||||||
if(glm::length(mouseVec) < 100) {
|
if(glm::length(mouseVec) < 100){
|
||||||
mouseVec = glm::normalize(mouseVec);
|
mouseVec = glm::normalize(mouseVec);
|
||||||
speeds[i] -= mouseVec;
|
speeds[i] -= mouseVec;
|
||||||
}
|
}
|
||||||
|
|
||||||
// wrap the screenhttps://profiler.firefox.com/from-file/calltree/?v=4
|
// wrap the screenhttps://profiler.firefox.com/from-file/calltree/?v=4
|
||||||
if(points[i].x > ofGetWidth()) points[i].x = 1;
|
if(points[i].x > ofGetWidth()){
|
||||||
if(points[i].x < 0) points[i].x = ofGetWidth()-1;
|
points[i].x = 1;
|
||||||
if(points[i].y > ofGetHeight()) points[i].y = 1;
|
}
|
||||||
if(points[i].y < 0) points[i].y = ofGetHeight()-1;
|
if(points[i].x < 0){
|
||||||
|
points[i].x = ofGetWidth() - 1;
|
||||||
|
}
|
||||||
|
if(points[i].y > ofGetHeight()){
|
||||||
|
points[i].y = 1;
|
||||||
|
}
|
||||||
|
if(points[i].y < 0){
|
||||||
|
points[i].y = ofGetHeight() - 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::draw() {
|
void ofApp::draw(){
|
||||||
OFX_PROFILER_FUNCTION();
|
OFX_PROFILER_FUNCTION();
|
||||||
|
|
||||||
// draw the points the slow way
|
// draw the points the slow way
|
||||||
if(mode == 1) {
|
if(mode == 1){
|
||||||
OFX_PROFILER_SCOPE("mode 1");
|
OFX_PROFILER_SCOPE("mode 1");
|
||||||
#ifdef TARGET_OPENGLES
|
#ifdef TARGET_OPENGLES
|
||||||
ofSetColor(255);
|
ofSetColor(255);
|
||||||
ofDrawBitmapString("OpenGL immediate mode not available in OpenGL ES. Press 2 or 3.",ofGetWidth() / 2.0f - 300,ofGetHeight() / 2.0f);
|
ofDrawBitmapString("OpenGL immediate mode not available in OpenGL ES. Press 2 or 3.", ofGetWidth() / 2.0f - 300, ofGetHeight() / 2.0f);
|
||||||
#else
|
#else
|
||||||
ofSetColor(255);
|
ofSetColor(255);
|
||||||
glBegin(GL_POINTS);
|
glBegin(GL_POINTS);
|
||||||
for (unsigned int i=0; i<points.size(); i++) {
|
for(unsigned int i = 0; i < points.size(); i++){
|
||||||
glVertex2f(points[i].x, points[i].y);
|
glVertex2f(points[i].x, points[i].y);
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// a bit faster
|
// a bit faster
|
||||||
else if(mode == 2) {
|
else if(mode == 2){
|
||||||
OFX_PROFILER_SCOPE("mode 2");
|
OFX_PROFILER_SCOPE("mode 2");
|
||||||
ofSetColor(255);
|
ofSetColor(255);
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
glVertexPointer(2, GL_FLOAT, 0, &points[0].x);
|
glVertexPointer(2, GL_FLOAT, 0, &points[0].x);
|
||||||
glDrawArrays(GL_POINTS, 0, (int)points.size());
|
glDrawArrays(GL_POINTS, 0, (int)points.size());
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// super fast (vbo)
|
// super fast (vbo)
|
||||||
else if(mode == 3) {
|
else if(mode == 3){
|
||||||
OFX_PROFILER_SCOPE("mode 3");
|
OFX_PROFILER_SCOPE("mode 3");
|
||||||
ofSetColor(255);
|
ofSetColor(255);
|
||||||
vbo.setVertexData(&points[0], (int)points.size(), GL_DYNAMIC_DRAW);
|
vbo.setVertexData(&points[0], (int)points.size(), GL_DYNAMIC_DRAW);
|
||||||
vbo.draw(GL_POINTS, 0, (int)points.size());
|
vbo.draw(GL_POINTS, 0, (int)points.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ofSetColor(0);
|
ofSetColor(0);
|
||||||
ofDrawRectangle(0, 0, 250, 90);
|
ofDrawRectangle(0, 0, 250, 90);
|
||||||
ofSetColor(255);
|
ofSetColor(255);
|
||||||
ofDrawBitmapString("Mode "+ofToString(mode), 20, 20);
|
ofDrawBitmapString("Mode " + ofToString(mode), 20, 20);
|
||||||
ofDrawBitmapString("FPS "+ofToString(ofGetFrameRate(), 0), 20, 40);
|
ofDrawBitmapString("FPS " + ofToString(ofGetFrameRate(), 0), 20, 40);
|
||||||
ofDrawBitmapString("Total Points "+ofToString((int)points.size()), 20, 60);
|
ofDrawBitmapString("Total Points " + ofToString((int)points.size()), 20, 60);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::exit() {
|
void ofApp::exit(){
|
||||||
OFX_PROFILER_END_SESSION();
|
OFX_PROFILER_END_SESSION();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::keyPressed(int key) {
|
void ofApp::keyPressed(int key){
|
||||||
|
|
||||||
if(key == '1') mode = 1;
|
if(key == '1'){
|
||||||
if(key == '2') mode = 2;
|
mode = 1;
|
||||||
if(key == '3') mode = 3;
|
}
|
||||||
|
if(key == '2'){
|
||||||
|
mode = 2;
|
||||||
|
}
|
||||||
|
if(key == '3'){
|
||||||
|
mode = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// clear all the points
|
// clear all the points
|
||||||
if(key == 'c') {
|
if(key == 'c'){
|
||||||
points.clear();
|
points.clear();
|
||||||
speeds.clear();
|
speeds.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// add crazy amount
|
// add crazy amount
|
||||||
if(key == 'z') {
|
if(key == 'z'){
|
||||||
for (int i=0; i<400000; i++) {
|
for(int i = 0; i < 400000; i++){
|
||||||
addPoint(ofRandomWidth(), ofRandomHeight());
|
addPoint(ofRandomWidth(), ofRandomHeight());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::keyReleased(int key){
|
void ofApp::keyReleased(int key){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::mouseMoved(int x, int y ){
|
void ofApp::mouseMoved(int x, int y){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::mouseDragged(int x, int y, int button){
|
void ofApp::mouseDragged(int x, int y, int button){
|
||||||
// add a bunch as you drag
|
// add a bunch as you drag
|
||||||
for (int i=0; i<400; i++) {
|
for(int i = 0; i < 400; i++){
|
||||||
addPoint(x, y);
|
addPoint(x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::mousePressed(int x, int y, int button){
|
void ofApp::mousePressed(int x, int y, int button){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::mouseReleased(int x, int y, int button){
|
void ofApp::mouseReleased(int x, int y, int button){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
@ -168,15 +181,15 @@ void ofApp::mouseExited(int x, int y){
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::windowResized(int w, int h){
|
void ofApp::windowResized(int w, int h){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::gotMessage(ofMessage msg){
|
void ofApp::gotMessage(ofMessage msg){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
void ofApp::dragEvent(ofDragInfo dragInfo){
|
void ofApp::dragEvent(ofDragInfo dragInfo){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,44 +1,42 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define OFX_PROFILER 1
|
|
||||||
|
|
||||||
#include "ofMain.h"
|
#include "ofMain.h"
|
||||||
#include "ofxProfiler.h"
|
#include "ofxProfiler.h"
|
||||||
|
|
||||||
class ofApp : public ofBaseApp{
|
class ofApp : public ofBaseApp {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setup();
|
void setup();
|
||||||
void update();
|
void update();
|
||||||
void draw();
|
void draw();
|
||||||
void exit();
|
void exit();
|
||||||
|
|
||||||
|
void keyPressed(int key);
|
||||||
|
void keyReleased(int key);
|
||||||
|
void mouseMoved(int x, int y);
|
||||||
|
void mouseDragged(int x, int y, int button);
|
||||||
|
void mousePressed(int x, int y, int button);
|
||||||
|
void mouseReleased(int x, int y, int button);
|
||||||
|
void mouseEntered(int x, int y);
|
||||||
|
void mouseExited(int x, int y);
|
||||||
|
void windowResized(int w, int h);
|
||||||
|
void dragEvent(ofDragInfo dragInfo);
|
||||||
|
void gotMessage(ofMessage msg);
|
||||||
|
|
||||||
|
void addPoint(float x, float y){
|
||||||
|
points.push_back(glm::vec2(x, y));
|
||||||
|
speeds.push_back(glm::vec2(ofRandom(-1, 1), ofRandom(-1, 1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// a simple vector of points
|
||||||
|
vector <glm::vec2> points;
|
||||||
|
vector <glm::vec2> speeds;
|
||||||
|
|
||||||
|
// in super fast mode we use a vbo
|
||||||
|
ofVbo vbo;
|
||||||
|
|
||||||
|
// mode switcher
|
||||||
|
int mode;
|
||||||
|
|
||||||
|
|
||||||
void keyPressed (int key);
|
|
||||||
void keyReleased(int key);
|
|
||||||
void mouseMoved(int x, int y );
|
|
||||||
void mouseDragged(int x, int y, int button);
|
|
||||||
void mousePressed(int x, int y, int button);
|
|
||||||
void mouseReleased(int x, int y, int button);
|
|
||||||
void mouseEntered(int x, int y);
|
|
||||||
void mouseExited(int x, int y);
|
|
||||||
void windowResized(int w, int h);
|
|
||||||
void dragEvent(ofDragInfo dragInfo);
|
|
||||||
void gotMessage(ofMessage msg);
|
|
||||||
|
|
||||||
void addPoint(float x, float y) {
|
|
||||||
points.push_back(glm::vec2(x, y));
|
|
||||||
speeds.push_back(glm::vec2(ofRandom(-1, 1), ofRandom(-1, 1)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// a simple vector of points
|
|
||||||
vector <glm::vec2> points;
|
|
||||||
vector <glm::vec2> speeds;
|
|
||||||
|
|
||||||
// in super fast mode we use a vbo
|
|
||||||
ofVbo vbo;
|
|
||||||
|
|
||||||
// mode switcher
|
|
||||||
int mode;
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,12 +27,12 @@ struct InstrumentationSession {
|
||||||
};
|
};
|
||||||
|
|
||||||
class Instrumentor {
|
class Instrumentor {
|
||||||
private:
|
private:
|
||||||
mutex m_Mutex;
|
mutex m_Mutex;
|
||||||
InstrumentationSession * m_CurrentSession;
|
InstrumentationSession * m_CurrentSession;
|
||||||
ofstream m_OutputStream;
|
ofstream m_OutputStream;
|
||||||
public:
|
public:
|
||||||
Instrumentor()
|
Instrumentor()
|
||||||
: m_CurrentSession(nullptr){
|
: m_CurrentSession(nullptr){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,12 +59,12 @@ class Instrumentor {
|
||||||
ofLog(OF_LOG_ERROR, "Instrumentor could not open results file '%s'.", filepath.c_str());
|
ofLog(OF_LOG_ERROR, "Instrumentor could not open results file '%s'.", filepath.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EndSession(){
|
void EndSession(){
|
||||||
lock_guard <mutex> lock(m_Mutex);
|
lock_guard <mutex> lock(m_Mutex);
|
||||||
InternalEndSession();
|
InternalEndSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriteProfile(const ProfileResult & result){
|
void WriteProfile(const ProfileResult & result){
|
||||||
stringstream json;
|
stringstream json;
|
||||||
|
@ -73,62 +73,62 @@ class Instrumentor {
|
||||||
replace(name.begin(), name.end(), '"', '\'');
|
replace(name.begin(), name.end(), '"', '\'');
|
||||||
|
|
||||||
json << setprecision(3) << fixed;
|
json << setprecision(3) << fixed;
|
||||||
json << ",{";
|
json << ",{";
|
||||||
json << "\"cat\":\"function\",";
|
json << "\"cat\":\"function\",";
|
||||||
json << "\"dur\":" << (result.ElapsedTime.count()) << ',';
|
json << "\"dur\":" << (result.ElapsedTime.count()) << ',';
|
||||||
json << "\"name\":\"" << name << "\",";
|
json << "\"name\":\"" << name << "\",";
|
||||||
json << "\"ph\":\"X\",";
|
json << "\"ph\":\"X\",";
|
||||||
json << "\"pid\":0,";
|
json << "\"pid\":0,";
|
||||||
json << "\"tid\":" << result.ThreadID << ",";
|
json << "\"tid\":" << result.ThreadID << ",";
|
||||||
json << "\"ts\":" << result.Start.count();
|
json << "\"ts\":" << result.Start.count();
|
||||||
json << "}";
|
json << "}";
|
||||||
|
|
||||||
lock_guard <mutex> lock(m_Mutex);
|
lock_guard <mutex> lock(m_Mutex);
|
||||||
if(m_CurrentSession){
|
if(m_CurrentSession){
|
||||||
m_OutputStream << json.str();
|
m_OutputStream << json.str();
|
||||||
m_OutputStream.flush();
|
m_OutputStream.flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Instrumentor & Get(){
|
static Instrumentor & Get(){
|
||||||
static Instrumentor instance;
|
static Instrumentor instance;
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void WriteHeader(){
|
void WriteHeader(){
|
||||||
m_OutputStream << "{\"otherData\": {},\"traceEvents\":[{}";
|
m_OutputStream << "{\"otherData\": {},\"traceEvents\":[{}";
|
||||||
m_OutputStream.flush();
|
m_OutputStream.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriteFooter(){
|
void WriteFooter(){
|
||||||
m_OutputStream << "]}";
|
m_OutputStream << "]}";
|
||||||
m_OutputStream.flush();
|
m_OutputStream.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: you must already own lock on m_Mutex before
|
// Note: you must already own lock on m_Mutex before
|
||||||
// calling InternalEndSession()
|
// calling InternalEndSession()
|
||||||
void InternalEndSession(){
|
void InternalEndSession(){
|
||||||
if(m_CurrentSession){
|
if(m_CurrentSession){
|
||||||
WriteFooter();
|
WriteFooter();
|
||||||
m_OutputStream.close();
|
m_OutputStream.close();
|
||||||
delete m_CurrentSession;
|
delete m_CurrentSession;
|
||||||
m_CurrentSession = nullptr;
|
m_CurrentSession = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class InstrumentationTimer {
|
class InstrumentationTimer {
|
||||||
public:
|
public:
|
||||||
InstrumentationTimer(const char * name)
|
InstrumentationTimer(const char * name)
|
||||||
: m_Name(name), m_Stopped(false){
|
: m_Name(name), m_Stopped(false){
|
||||||
m_StartTimepoint = chrono::steady_clock::now();
|
m_StartTimepoint = chrono::steady_clock::now();
|
||||||
}
|
}
|
||||||
|
|
||||||
~InstrumentationTimer(){
|
~InstrumentationTimer(){
|
||||||
if(!m_Stopped){
|
if(!m_Stopped){
|
||||||
Stop();
|
Stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,16 +139,15 @@ class InstrumentationTimer {
|
||||||
|
|
||||||
Instrumentor::Get().WriteProfile({m_Name, highResStart, elapsedTime, this_thread::get_id()});
|
Instrumentor::Get().WriteProfile({m_Name, highResStart, elapsedTime, this_thread::get_id()});
|
||||||
|
|
||||||
m_Stopped = true;
|
m_Stopped = true;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
const char * m_Name;
|
const char * m_Name;
|
||||||
chrono::time_point <chrono::steady_clock> m_StartTimepoint;
|
chrono::time_point <chrono::steady_clock> m_StartTimepoint;
|
||||||
bool m_Stopped;
|
bool m_Stopped;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#define OFX_PROFILER 1
|
|
||||||
// Resolve which function signature macro will HZ_PROFILE_BEGIN_SESSIONbe used. Note that this only
|
// Resolve which function signature macro will HZ_PROFILE_BEGIN_SESSIONbe used. Note that this only
|
||||||
// is resolved when the (pre)compiler starts, so the syntax highlighting
|
// is resolved when the (pre)compiler starts, so the syntax highlighting
|
||||||
// could mark the wrong one in your editor!
|
// could mark the wrong one in your editor!
|
||||||
|
|
Loading…
Reference in a new issue