//------------------------------------------------------------------------------ static void #if GLFW_VERSION_MAJOR>=3 motion(GLFWwindow *, double dx, double dy) { int x=(int)dx, y=(int)dy; #else motion(int x, int y) { #endif if (g_mbutton[0] && !g_mbutton[1] && !g_mbutton[2]) { // orbit g_rotate[0] += x - g_prev_x; g_rotate[1] += y - g_prev_y; } else if (!g_mbutton[0] && !g_mbutton[1] && g_mbutton[2]) { // pan g_pan[0] -= g_dolly*(x - g_prev_x)/g_width; g_pan[1] += g_dolly*(y - g_prev_y)/g_height; } else if ((g_mbutton[0] && !g_mbutton[1] && g_mbutton[2]) or (!g_mbutton[0] && g_mbutton[1] && !g_mbutton[2])) { // dolly g_dolly -= g_dolly*0.01f*(x - g_prev_x); if(g_dolly <= 0.01) g_dolly = 0.01f; } g_prev_x = x; g_prev_y = y; } //------------------------------------------------------------------------------ static void #if GLFW_VERSION_MAJOR>=3 mouse(GLFWwindow *, int button, int state, int mods) { #else mouse(int button, int state) { #endif if (button == 0 && state == GLFW_PRESS && g_hud.MouseClick(g_prev_x, g_prev_y)) return; if (button < 3) { g_mbutton[button] = (state == GLFW_PRESS); } } //------------------------------------------------------------------------------ static void uninitGL() { glDeleteQueries(2, g_queries); delete g_batch; g_batch = NULL; #ifdef OPENSUBDIV_HAS_CUDA cudaDeviceReset(); #endif #ifdef OPENSUBDIV_HAS_OPENCL uninitCL(g_clContext, g_clQueue); #endif }
//------------------------------------------------------------------------------ int checkBackend(int backend, int levels) { printf("*** checking backend : %s\n", g_BackendNames[backend]); if (backend == kBackendCL) { #ifdef OPENSUBDIV_HAS_OPENCL if (initCL(&g_clContext, &g_clQueue) == false) { printf(" Cannot initialize OpenCL, skipping...\n"); return 0; } #else printf(" No OpenCL available, skipping...\n"); return 0; #endif } int total = 0; #define test_catmark_edgeonly #define test_catmark_edgecorner #define test_catmark_flap #define test_catmark_pyramid #define test_catmark_pyramid_creases0 #define test_catmark_pyramid_creases1 #define test_catmark_cube #define test_catmark_cube_creases0 #define test_catmark_cube_creases1 #define test_catmark_cube_corner0 #define test_catmark_cube_corner1 #define test_catmark_cube_corner2 #define test_catmark_cube_corner3 #define test_catmark_cube_corner4 #define test_catmark_dart_edgeonly #define test_catmark_dart_edgecorner #define test_catmark_tent #define test_catmark_tent_creases0 #define test_catmark_tent_creases1 #define test_catmark_square_hedit0 #define test_catmark_square_hedit1 #define test_catmark_square_hedit2 #define test_catmark_square_hedit3 #define test_loop_triangle_edgeonly #define test_loop_triangle_edgecorner #define test_loop_icosahedron #define test_loop_cube #define test_loop_cube_creases0 #define test_loop_cube_creases1 #define test_bilinear_cube #ifdef test_catmark_edgeonly #include "../shapes/catmark_edgeonly.h" total += checkMesh( "test_catmark_edgeonly", catmark_edgeonly, levels, kCatmark, backend ); #endif #ifdef test_catmark_edgecorner #include "../shapes/catmark_edgecorner.h" total += checkMesh( "test_catmark_edgeonly", catmark_edgecorner, levels, kCatmark, backend ); #endif #ifdef test_catmark_flap #include "../shapes/catmark_flap.h" total += checkMesh( "test_catmark_flap", catmark_flap, levels, kCatmark, backend ); #endif #ifdef test_catmark_pyramid #include "../shapes/catmark_pyramid.h" total += checkMesh( "test_catmark_pyramid", catmark_pyramid, levels, kCatmark, backend ); #endif #ifdef test_catmark_pyramid_creases0 #include "../shapes/catmark_pyramid_creases0.h" total += checkMesh( "test_catmark_pyramid_creases0", catmark_pyramid_creases0, levels, kCatmark, backend ); #endif #ifdef test_catmark_pyramid_creases1 #include "../shapes/catmark_pyramid_creases1.h" total += checkMesh( "test_catmark_pyramid_creases1", catmark_pyramid_creases1, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube #include "../shapes/catmark_cube.h" total += checkMesh( "test_catmark_cube", catmark_cube, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube_creases0 #include "../shapes/catmark_cube_creases0.h" total += checkMesh( "test_catmark_cube_creases0", catmark_cube_creases0, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube_creases1 #include "../shapes/catmark_cube_creases1.h" total += checkMesh( "test_catmark_cube_creases1", catmark_cube_creases1, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube_corner0 #include "../shapes/catmark_cube_corner0.h" total += checkMesh( "test_catmark_cube_corner0", catmark_cube_corner0, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube_corner1 #include "../shapes/catmark_cube_corner1.h" total += checkMesh( "test_catmark_cube_corner1", catmark_cube_corner1, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube_corner2 #include "../shapes/catmark_cube_corner2.h" total += checkMesh( "test_catmark_cube_corner2", catmark_cube_corner2, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube_corner3 #include "../shapes/catmark_cube_corner3.h" total += checkMesh( "test_catmark_cube_corner3", catmark_cube_corner3, levels, kCatmark, backend ); #endif #ifdef test_catmark_cube_corner4 #include "../shapes/catmark_cube_corner4.h" total += checkMesh( "test_catmark_cube_corner4", catmark_cube_corner4, levels, kCatmark, backend ); #endif #ifdef test_catmark_dart_edgecorner #include "../shapes/catmark_dart_edgecorner.h" total += checkMesh( "test_catmark_dart_edgecorner", catmark_dart_edgecorner, levels, kCatmark, backend ); #endif #ifdef test_catmark_dart_edgeonly #include "../shapes/catmark_dart_edgeonly.h" total += checkMesh( "test_catmark_dart_edgeonly", catmark_dart_edgeonly, levels, kCatmark, backend ); #endif #ifdef test_catmark_tent #include "../shapes/catmark_tent.h" total += checkMesh( "test_catmark_tent", catmark_tent, levels, kCatmark, backend ); #endif #ifdef test_catmark_tent_creases0 #include "../shapes/catmark_tent_creases0.h" total += checkMesh( "test_catmark_tent_creases0", catmark_tent_creases0, levels, kCatmark, backend ); #endif #ifdef test_catmark_tent_creases1 #include "../shapes/catmark_tent_creases1.h" total += checkMesh( "test_catmark_tent_creases1", catmark_tent_creases1, levels, kCatmark, backend ); #endif #ifdef test_catmark_square_hedit0 #include "../shapes/catmark_square_hedit0.h" total += checkMesh( "test_catmark_square_hedit0", catmark_square_hedit0, levels, kCatmark, backend ); #endif #ifdef test_catmark_square_hedit1 #include "../shapes/catmark_square_hedit1.h" total += checkMesh( "test_catmark_square_hedit1", catmark_square_hedit1, levels, kCatmark, backend ); #endif #ifdef test_catmark_square_hedit2 #include "../shapes/catmark_square_hedit2.h" total += checkMesh( "test_catmark_square_hedit2", catmark_square_hedit2, levels, kCatmark, backend ); #endif #ifdef test_catmark_square_hedit3 #include "../shapes/catmark_square_hedit3.h" total += checkMesh( "test_catmark_square_hedit3", catmark_square_hedit3, levels, kCatmark, backend ); #endif #ifdef test_loop_triangle_edgeonly #include "../shapes/loop_triangle_edgeonly.h" total += checkMesh( "test_loop_triangle_edgeonly", loop_triangle_edgeonly, levels, kLoop, backend ); #endif #ifdef test_loop_triangle_edgecorner #include "../shapes/loop_triangle_edgecorner.h" total += checkMesh( "test_loop_triangle_edgecorner", loop_triangle_edgecorner, levels, kLoop, backend ); #endif #ifdef test_loop_saddle_edgeonly #include "../shapes/loop_saddle_edgeonly.h" total += checkMesh( "test_loop_saddle_edgeonly", loop_saddle_edgeonly, levels, kLoop, backend ); #endif #ifdef test_loop_saddle_edgecorner #include "../shapes/loop_saddle_edgecorner.h" total += checkMesh( "test_loop_saddle_edgecorner", loop_saddle_edgecorner, levels, kLoop, backend ); #endif #ifdef test_loop_icosahedron #include "../shapes/loop_icosahedron.h" total += checkMesh( "test_loop_icosahedron", loop_icosahedron, levels, kLoop, backend ); #endif #ifdef test_loop_cube #include "../shapes/loop_cube.h" total += checkMesh( "test_loop_cube", loop_cube, levels, kLoop, backend ); #endif #ifdef test_loop_cube_creases0 #include "../shapes/loop_cube_creases0.h" total += checkMesh( "test_loop_cube_creases0", loop_cube_creases0,levels, kLoop, backend ); #endif #ifdef test_loop_cube_creases1 #include "../shapes/loop_cube_creases1.h" total += checkMesh( "test_loop_cube_creases1", loop_cube_creases1, levels, kLoop, backend ); #endif #ifdef test_bilinear_cube #include "../shapes/bilinear_cube.h" total += checkMesh( "test_bilinear_cube", bilinear_cube, levels, kBilinear, backend ); #endif if (backend == kBackendCL) { #ifdef OPENSUBDIV_HAS_OPENCL uninitCL(g_clContext, g_clQueue); #endif } return total; }