-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGlobalUtil.h
More file actions
157 lines (142 loc) · 4.69 KB
/
GlobalUtil.h
File metadata and controls
157 lines (142 loc) · 4.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
////////////////////////////////////////////////////////////////////////////
// File: GlobalUtil.h
// Author: Changchang Wu
// Description :
// GlobalParam: Global parameters
// ClockTimer: Timer
// GlobalUtil: Global Function wrapper
//
// Copyright (c) 2007 University of North Carolina at Chapel Hill
// All Rights Reserved
//
// Permission to use, copy, modify and distribute this software and its
// documentation for educational, research and non-profit purposes, without
// fee, and without a written agreement is hereby granted, provided that the
// above copyright notice and the following paragraph appear in all copies.
//
// The University of North Carolina at Chapel Hill make no representations
// about the suitability of this software for any purpose. It is provided
// 'as is' without express or implied warranty.
//
// Please send BUG REPORTS to [email protected]
//
////////////////////////////////////////////////////////////////////////////
#ifndef _GLOBAL_UTILITY_H
#define _GLOBAL_UTILITY_H
//wrapper for some shader function
//class ProgramGPU;
class LiteWindow;
class GlobalParam
{
public:
static GLuint _texTarget;
static GLuint _iTexFormat;
static int _texMaxDim;
static int _texMaxDimGL;
static int _texMinDim;
static int _MemCapGPU;
static int _FitMemoryCap;
static int _verbose;
static int _timingS;
static int _timingO;
static int _timingL;
static int _usePackedTex;
static int _IsNvidia;
static int _KeepShaderLoop;
static int _UseCUDA;
static int _UseOpenCL;
static int _UseDynamicIndexing;
static int _debug;
static int _MaxFilterWidth;
static float _FilterWidthFactor;
static float _OrientationWindowFactor;
static float _DescriptorWindowFactor;
static int _MaxOrientation;
static int _OrientationPack2;
static int _ListGenGPU;
static int _ListGenSkipGPU;
static int _SupportNVFloat;
static int _SupportTextureRG;
static int _FullSupported;
static float _MaxFeaturePercent;
static int _MaxLevelFeatureNum;
static int _DescriptorPPR;
static int _DescriptorPPT; //pixel per texture for one descriptor
static int _FeatureTexBlock;
static int _NarrowFeatureTex; //implemented but no performance improvement
static int _SubpixelLocalization;
static int _ProcessOBO; //not implemented yet
static int _TruncateMethod;
static int _PreciseBorder; //implemented
static int _UseSiftGPUEX;
static int _ForceTightPyramid;
static int _octave_min_default;
static int _octave_num_default;
static int _InitPyramidWidth;
static int _InitPyramidHeight;
static int _PreProcessOnCPU;
static int _GoodOpenGL;
static int _FixedOrientation;
static int _LoweOrigin;
static int _ExitAfterSIFT;
static int _NormalizedSIFT;
static int _BinarySIFT;
static int _KeepExtremumSign;
static int _FeatureCountThreshold;
static int _KeyPointListForceLevel0;
static int _DarknessAdaption;
//for compatability with old version:
static float _OrientationExtraFactor;
static float _OrientationGaussianFactor;
static float _MulitiOrientationThreshold;
////////////////////////////////////////
static int _WindowInitX;
static int _WindowInitY;
static const char* _WindowDisplay;
static int _DeviceIndex;
};
class ClockTimer
{
private:
char _current_event[256];
int _time_start;
int _time_stop;
public:
static int ClockMS();
static double CLOCK();
static void InitHighResolution();
void StopTimer(int verb = 1);
void StartTimer(const char * event, int verb=0);
float GetElapsedTime();
};
class GlobalUtil:public GlobalParam
{
static ClockTimer _globalTimer;
public:
inline static double CLOCK() { return ClockTimer::CLOCK(); }
inline static void StopTimer() { _globalTimer.StopTimer(_timingS); }
inline static void StartTimer(const char * event) { _globalTimer.StartTimer(event, _timingO); }
inline static float GetElapsedTime() { return _globalTimer.GetElapsedTime(); }
static void FitViewPort(int width, int height);
static void SetTextureParameter();
static void SetTextureParameterUS();
#ifdef _DEBUG
static void CheckErrorsGL(const char* location = NULL);
#else
static void inline CheckErrorsGL(const char* location = NULL){};
#endif
static bool CheckFramebufferStatus();
//initialize Opengl parameters
static void SelectDisplay();
static void InitGLParam(int NotTargetGL = 0);
static void SetGLParam();
static int CreateWindowEZ();
static void CleanupOpenGL();
static void SetDeviceParam(int argc, char** argv);
static int CreateWindowEZ(LiteWindow* window);
};
#if defined(_MSC_VER) && _MSC_VER == 1200
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#endif