#ifndef __global_h_ #define __global_h_ #include #include "glm.h" #include "camera.h" #include "mesh.h" #include "color.h" #include "change.h" #include "buffers.h" // For progress update. #include "GeoMesh.h" #ifndef TRUE #define TRUE 1 #endif /* TRUE */ #ifndef FALSE #define FALSE 0 #endif /* FALSE */ #ifndef false #define false ((char) 0) #endif #ifndef true #define true ((char) 1) #endif #ifndef MAX #define MAX(a,b) ( (a) > (b) ? (a) : (b) ) #endif #ifndef MIN #define MIN(a,b) ( (a) < (b) ? (a) : (b) ) #endif #ifndef ABS #define ABS(a) ( (a) >= 0 ? (a) : (-(a)) ) #endif #define MAX_CHAR 256 //#define DEBUG // Geometry acceleration technique //#define IMMEDIATE_MODE //#define VERTEX_ARRAY_INTERLEAVE //#define VERTEX_ARRAY #define VERTEX_BUFFER_OBJECTS // Viewpoint metric //#define KL #define MI //#define HE //#define CS // Histogram technique //#define USE_OCCLUSION_QUERY #define HYBRID_HW_SW_HISTOGRAM //#define SALIENCY #define CHECK_LOCAL_INVERSION // Extension added into the filename #ifdef KL // Kullback-Leibler #define EXT "VKL" #endif #ifdef MI // Mutual Information #define EXT "VMI" #endif #ifdef HE // Hellinger #define EXT "VHE" #endif #ifdef CS // Chi-Square #define EXT "VCS" #endif #define CHECK_OPENGL_ERROR( cmd ) \ { GLenum error; \ while ( ( error = glGetError() ) != GL_NO_ERROR ) { \ printf( "[%s:%d] ’%s’failed with error %s\n", \ __FILE__, __LINE__, \ cmd, gluErrorString(error) ); \ } \ } #define CHECK_FRAMEBUFFER_STATUS() \ { \ GLenum status; \ status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); \ switch(status) { \ case GL_FRAMEBUFFER_COMPLETE_EXT: \ break; \ case GL_FRAMEBUFFER_UNSUPPORTED_EXT: \ /* choose different formats */ \ break; \ default: \ /* programming error; will fail on all hardware */ \ assert(0); \ } \ } namespace VMI { extern GLMmodel* pmodel; // Vertices start at position 1 extern GLubyte *pixels; extern Camera *cameras; extern int numCameras; extern Color *colors; extern int **histogram; extern GLuint *queries; extern Mesh *mesh; extern GLdouble *initialIs; extern GLdouble radius; extern GLdouble fov; extern int numDemandedTriangles, cameraType; extern GLboolean bBeQuiet, bEnableOffScreen, bSaveLog, bLoadCamerasFromFile, bRemoveRedundantVertices; extern GLsizei width, height; extern GLuint vertex_buf, color_buf; extern Vertex_ *buf_vertices; extern Color *buf_colors; extern int vmiWin; extern char filename[MAX_CHAR]; extern void init(void); extern void resetProjectedAreas(int **histogram, int numCameras); extern void getProjectedAreas(int **histogram, int numCameras); extern void getProjectedAreasWin(int **histogram, int numCameras, Change *c); extern void renderGeometry(void); extern void drawTexture(void); extern void display(void); extern void freeMemory(void); extern void applyHWAcceleration(void); extern void updateHWAcceleration(Change *c); extern void setOrthographicProjection(void); extern void resetPerspectiveProjection(void); extern void renderBitmapString(float x, float y, void *font, char *string); // For progress update extern Geometry::TIPOFUNC mUPB; } #endif