int main() { curl_global_init(CURL_GLOBAL_ALL); glfwSetErrorCallback(error_callback); if(!glfwInit()) { printf("Error: cannot setup glfw.\n"); exit(EXIT_FAILURE); } glfwWindowHint(GLFW_SAMPLES, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); GLFWwindow* win = NULL; int w = 1280; int h = 768; win = glfwCreateWindow(w, h, "KankerFont v0.0.0.2", NULL, NULL); if(!win) { glfwTerminate(); exit(EXIT_FAILURE); } glfwSetFramebufferSizeCallback(win, resize_callback); glfwSetKeyCallback(win, key_callback); glfwSetCharCallback(win, char_callback); glfwSetCursorPosCallback(win, cursor_callback); glfwSetMouseButtonCallback(win, button_callback); glfwMakeContextCurrent(win); glfwSwapInterval(1); if (!gladLoadGL()) { printf("Cannot load GL.\n"); exit(1); } // ---------------------------------------------------------------- // THIS IS WHERE YOU START CALLING OPENGL FUNCTIONS, NOT EARLIER!! // ---------------------------------------------------------------- rx_log_init(); KankerApp app; if (0 != app.init()) { printf("error: cannot init the app.\n"); exit(EXIT_FAILURE); } app_ptr = &app; while(!glfwWindowShouldClose(win)) { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); app.update(); app.draw(); glfwSwapBuffers(win); glfwPollEvents(); } glfwTerminate(); return EXIT_SUCCESS; }
int main() { rx_log_init(); glfwSetErrorCallback(error_callback); if(!glfwInit()) { printf("Error: cannot setup glfw.\n"); exit(EXIT_FAILURE); } glfwWindowHint(GLFW_SAMPLES, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); GLFWwindow* win = NULL; int w = 1280; int h = 720; win_w = w; win_h = h; win = glfwCreateWindow(w, h, "//_ - tracker test - //__ ", NULL, NULL); if(!win) { glfwTerminate(); exit(EXIT_FAILURE); } glfwSetFramebufferSizeCallback(win, resize_callback); glfwSetKeyCallback(win, key_callback); glfwSetCharCallback(win, char_callback); glfwSetCursorPosCallback(win, cursor_callback); glfwSetMouseButtonCallback(win, button_callback); glfwMakeContextCurrent(win); glfwSwapInterval(1); if (!gladLoadGL()) { printf("Cannot load GL.\n"); exit(1); } // ---------------------------------------------------------------- // THIS IS WHERE YOU START CALLING OPENGL FUNCTIONS, NOT EARLIER!! // ---------------------------------------------------------------- std::string files_path = rx_get_exe_path() +"/../data/input_mosaic/"; image_files = rx_get_files(files_path, "png"); if (0 == image_files.size()) { RX_ERROR("Cannot find the image files: %lu", image_files.size()); ::exit(1); } mos::config.webcam_width = 320; mos::config.webcam_height = 240; fex::config.rows = 4; fex::config.cols = 10; track::TrackingSettings cfg; cfg.webcam_width = mos::config.webcam_width; cfg.webcam_height = mos::config.webcam_height; cfg.webcam_device = 0; #if USE_POLAROID cfg.tile_width = 284; cfg.tile_height = 347; cfg.tile_nlayers = 10; #else cfg.tile_width = 64; cfg.tile_height = 64; cfg.tile_nlayers = 100; #endif track::Tracking tracking; tracking_ptr = &tracking; if (0 != tracking.init(cfg)) { RX_ERROR("Cannot setup tracking."); exit(EXIT_FAILURE); } while(!glfwWindowShouldClose(win)) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); tracking.update(); tracking.draw(); glfwSwapBuffers(win); glfwPollEvents(); } tracking.shutdown(); glfwTerminate(); return EXIT_SUCCESS; }
int main() { glfwSetErrorCallback(error_callback); if(!glfwInit()) { printf("Error: cannot setup glfw.\n"); exit(EXIT_FAILURE); } glfwWindowHint(GLFW_SAMPLES, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); GLFWwindow* win = NULL; int w = 1280; int h = 720; win = glfwCreateWindow(w, h, "~`` Image Loader - Copy Images Into data/test/ ``~", NULL, NULL); if(!win) { glfwTerminate(); exit(EXIT_FAILURE); } glfwSetFramebufferSizeCallback(win, resize_callback); glfwSetKeyCallback(win, key_callback); glfwSetCharCallback(win, char_callback); glfwSetCursorPosCallback(win, cursor_callback); glfwSetMouseButtonCallback(win, button_callback); glfwMakeContextCurrent(win); glfwSwapInterval(1); if (!gladLoadGL()) { printf("Cannot load GL.\n"); exit(1); } // ---------------------------------------------------------------- // THIS IS WHERE YOU START CALLING OPENGL FUNCTIONS, NOT EARLIER!! // ---------------------------------------------------------------- rx_log_init(); mos::ImageLoader loader; if (0 != loader.init()) { exit(EXIT_FAILURE); } loader.on_loaded = on_loaded; mos::DirWatcher watcher; if (0 != watcher.init(rx_to_data_path("test"), on_dir_change, &loader)) { exit(EXIT_FAILURE); } Painter painter; while(!glfwWindowShouldClose(win)) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); watcher.update(); GLenum fmt = GL_NONE; if (must_recreate || must_update) { if (1 == tex_channels) { fmt = GL_RED; } else if (2 == tex_channels) { fmt = GL_RG; } else if (3 == tex_channels) { fmt = GL_RGB; } else if (4 == tex_channels) { fmt = GL_RGBA; } else { RX_ERROR("Unsupported number of channels: %d", tex_channels); } } if (must_recreate) { RX_VERBOSE("Create texture, width: %d, height: %d, channels: %d", tex_width, tex_height, tex_channels); if (0 != tex_id) { glDeleteTextures(1, &tex_id); } if (GL_NONE != fmt) { glGenTextures(1, &tex_id); glBindTexture(GL_TEXTURE_2D, tex_id); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex_width, tex_height, 0, fmt, GL_UNSIGNED_BYTE, pixels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); } must_recreate = false; must_update = false; } if (must_update && GL_NONE != fmt) { RX_VERBOSE("Updating pixels"); glBindTexture(GL_TEXTURE_2D, tex_id); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, tex_width, tex_height, 0, fmt, GL_UNSIGNED_BYTE, pixels); must_update = false; } if (0 != tex_id) { int x = MAX(0, (w/2) - (tex_width/2)); int y = 0; painter.clear(); painter.texture(tex_id, x, y, tex_width, tex_height); painter.draw(); } glfwSwapBuffers(win); glfwPollEvents(); } loader.shutdown(); glfwTerminate(); return EXIT_SUCCESS; }