31 #define WIN32_LEAN_AND_MEAN
40 int GlobalParam:: _verbose = 1;
41 int GlobalParam:: _timingS = 1;
42 int GlobalParam:: _timingO = 0;
43 int GlobalParam:: _timingL = 0;
46 int GlobalParam:: _debug = 0;
47 int GlobalParam:: _usePackedTex = 1;
48 int GlobalParam:: _UseCUDA = 0;
49 int GlobalParam:: _UseOpenCL = 0;
50 int GlobalParam:: _MaxFilterWidth = -1;
51 float GlobalParam:: _FilterWidthFactor = 4.0f;
52 float GlobalParam:: _DescriptorWindowFactor = 3.0f;
53 int GlobalParam:: _SubpixelLocalization = 1;
54 int GlobalParam:: _MaxOrientation = 2;
55 int GlobalParam:: _OrientationPack2 = 0;
56 float GlobalParam:: _MaxFeaturePercent = 0.005f;
57 int GlobalParam:: _MaxLevelFeatureNum = 4096;
58 int GlobalParam:: _FeatureTexBlock = 4;
59 int GlobalParam:: _NarrowFeatureTex = 0;
63 int GlobalParam:: _ForceTightPyramid = 0;
66 int GlobalParam:: _ListGenGPU = 1;
67 int GlobalParam:: _ListGenSkipGPU = 6;
68 int GlobalParam:: _PreProcessOnCPU = 1;
71 int GlobalParam:: _texMaxDim = 3200;
72 int GlobalParam:: _texMaxDimGL = 4096;
73 int GlobalParam:: _texMinDim = 16;
74 int GlobalParam:: _MemCapGPU = 0;
75 int GlobalParam:: _FitMemoryCap = 0;
76 int GlobalParam:: _IsNvidia = 0;
77 int GlobalParam:: _KeepShaderLoop = 0;
81 int GlobalParam:: _DescriptorPPR = 8;
82 int GlobalParam:: _DescriptorPPT = 16;
85 int GlobalParam:: _SupportNVFloat = 0;
86 int GlobalParam:: _SupportTextureRG = 0;
87 int GlobalParam:: _UseDynamicIndexing = 0;
88 int GlobalParam:: _FullSupported = 1;
91 int GlobalParam:: _UseSiftGPUEX = 0;
92 int GlobalParam:: _InitPyramidWidth=0;
93 int GlobalParam:: _InitPyramidHeight=0;
94 int GlobalParam:: _octave_min_default=0;
95 int GlobalParam:: _octave_num_default=-1;
99 int GlobalParam:: _GoodOpenGL = -1;
100 int GlobalParam:: _FixedOrientation = 0;
101 int GlobalParam:: _LoweOrigin = 0;
102 int GlobalParam:: _NormalizedSIFT = 1;
103 int GlobalParam:: _BinarySIFT = 0;
104 int GlobalParam:: _ExitAfterSIFT = 0;
105 int GlobalParam:: _KeepExtremumSign = 0;
107 int GlobalParam:: _KeyPointListForceLevel0 = 0;
108 int GlobalParam:: _DarknessAdaption = 0;
109 int GlobalParam:: _ProcessOBO = 0;
110 int GlobalParam:: _TruncateMethod = 0;
111 int GlobalParam:: _PreciseBorder = 1;
114 float GlobalParam:: _OrientationWindowFactor = 2.0f;
115 float GlobalParam:: _OrientationGaussianFactor = 1.5f;
116 float GlobalParam:: _MulitiOrientationThreshold = 0.8f;
118 int GlobalParam:: _FeatureCountThreshold = -1;
121 int GlobalParam:: _WindowInitX = -1;
122 int GlobalParam:: _WindowInitY = -1;
123 int GlobalParam:: _DeviceIndex = 0;
138 while (errnum = glGetError())
140 errstr = (
const char *)(gluErrorString(errnum));
145 std::cerr <<
"Error " << errnum;
148 if(location) std::cerr <<
" at " << location;
158 glActiveTexture(GL_TEXTURE0);
165 #define CHAR1_TO_INT(x) ((x >= 'A' && x <= 'Z') ? x + 32 : x)
166 #define CHAR2_TO_INT(str, i) (str[i] ? CHAR1_TO_INT(str[i]) + (CHAR1_TO_INT(str[i+1]) << 8) : 0)
167 #define CHAR3_TO_INT(str, i) (str[i] ? CHAR1_TO_INT(str[i]) + (CHAR2_TO_INT(str, i + 1) << 8) : 0)
168 #define STRING_TO_INT(str) (CHAR1_TO_INT(str[0]) + (CHAR3_TO_INT(str, 1) << 8))
171 for(
int i = 0; i< argc; i++)
174 if(arg ==
NULL || arg[0] !=
'-')
continue;
180 case 'w' + (
'i' << 8) + (
'n' << 16) + (
'p' << 24):
184 if(sscanf(argv[++i],
"%dx%d", &x, &y) == 2)
191 case 'd' + (
'i' << 8) + (
's' << 16) + (
'p' << 24):
197 case 'c' + (
'u' << 8) + (
'd' << 16) + (
'a' << 24):
201 scanf(argv[++i],
"%d", &device) ;
214 glTexParameteri (
_texTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
215 glTexParameteri (
_texTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
216 glTexParameteri(
_texTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
217 glTexParameteri(
_texTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
218 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
226 glTexParameteri (
_texTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
227 glTexParameteri (
_texTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
228 glTexParameteri(
_texTarget, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
229 glTexParameteri(
_texTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
230 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
237 glGetIntegerv(GL_VIEWPORT, port);
241 glMatrixMode(GL_PROJECTION);
244 glMatrixMode(GL_MODELVIEW);
252 status=(GLenum)glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
254 case GL_FRAMEBUFFER_COMPLETE_EXT:
256 case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
257 std::cerr<<(
"Framebuffer incomplete,incomplete attachment\n");
259 case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
260 std::cerr<<(
"Unsupported framebuffer format\n");
262 case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
263 std::cerr<<(
"Framebuffer incomplete,missing attachment\n");
265 case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
266 std::cerr<<(
"Framebuffer incomplete,attached images must have same dimensions\n");
268 case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
269 std::cerr<<(
"Framebuffer incomplete,attached images must have same format\n");
271 case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
272 std::cerr<<(
"Framebuffer incomplete,missing draw buffer\n");
274 case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
275 std::cerr<<(
"Framebuffer incomplete,missing read buffer\n");
316 glActiveTexture(GL_TEXTURE0);
336 const char * vendor = (
const char * )glGetString(GL_VENDOR);
345 else if(!strstr(vendor,
"ATI") )
359 }
else if(strstr(vendor,
"ATI") && glewGetExtension(
"GL_ATI_meminfo"))
361 int info[4]; glGetIntegerv(0x87FC, info);
372 if (glewGetExtension(
"GL_ARB_fragment_shader") != GL_TRUE ||
373 glewGetExtension(
"GL_ARB_shader_objects") != GL_TRUE ||
374 glewGetExtension(
"GL_ARB_shading_language_100") != GL_TRUE)
376 std::cerr <<
"Shader not supported by your hardware!\n";
380 if (glewGetExtension(
"GL_EXT_framebuffer_object") != GL_TRUE)
382 std::cerr <<
"Framebuffer object not supported!\n";
386 if(glewGetExtension(
"GL_ARB_texture_rectangle")==GL_TRUE)
390 glGetIntegerv(GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT, &value);
401 std::cerr <<
"GL_ARB_texture_rectangle not supported!\n";
409 glShadeModel(GL_FLAT);
410 glPolygonMode(GL_FRONT, GL_FILL);
426 std::cout <<
"WARNING: invalid dispaly specified\n";
430 PIXELFORMATDESCRIPTOR pfd =
432 sizeof(PIXELFORMATDESCRIPTOR),1,
433 PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
434 PFD_TYPE_RGBA,24,0, 0, 0, 0, 0, 0,0,0,0,0, 0, 0, 0,16,0,0,
435 PFD_MAIN_PLANE,0,0, 0, 0
437 ChoosePixelFormat(hdc, &pfd);
443 if(window ==
NULL)
return 0;
452 std::cerr <<
"Unable to create OpenGL Context!\n";
453 std::cerr <<
"For nVidia cards, you can try change to CUDA mode in this case\n";
int CreateLiteWindow(LiteWindow *window)
#define STRING_TO_INT(str)
void StartTimer(const char *event, int verb=0)
static void InitHighResolution()
void StopTimer(int verb=1)
static GLuint _iTexFormat
static int _SupportNVFloat
static int _SupportTextureRG
static int _KeepShaderLoop
static const char * _WindowDisplay
static bool CheckFramebufferStatus()
static void CleanupOpenGL()
static void CheckErrorsGL(const char *location=NULL)
static void SelectDisplay()
static void FitViewPort(int width, int height)
static void SetDeviceParam(int argc, char **argv)
static void InitGLParam(int NotTargetGL=0)
static void SetTextureParameter()
static void SetTextureParameterUS()
static int CreateWindowEZ()
void Create(int x=-1, int y=-1, const char *display=NULL)