Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}