コード例 #1
0
ファイル: view.c プロジェクト: mvanderkolff/navi-misc
static gboolean
view_configure (GLDrawingArea *widget, GdkEventConfigure *event, View *view)
{
  view_resize (view);
  view_render (view);
  return TRUE;
}
コード例 #2
0
ファイル: view.c プロジェクト: mvanderkolff/navi-misc
static gboolean
view_expose (GLDrawingArea *widget, GdkEventExpose *event, View *view)
{
  view_render (view);

  return TRUE;
}
コード例 #3
0
ファイル: view.c プロジェクト: mvanderkolff/navi-misc
static gboolean
view_scroll (GLDrawingArea *widget, GdkEventScroll *event, View *view)
{
  if (event->direction == GDK_SCROLL_UP)
  {
    if (view->camera->distance > 10)
      view->camera->distance -= 40;
    view_render (view);
  }
  else if (event->direction == GDK_SCROLL_DOWN)
  {
    if (view->camera->distance < 1500)
      view->camera->distance += 40;
    view_render (view);
  }

  return TRUE;
}
コード例 #4
0
ファイル: view.c プロジェクト: AlexKordic/gpujpeg
void
view_glx_render(struct view* view)
{
    TIMER_INIT();
    TIMER_START();
    
    view_render(view);
        
    glXSwapBuffers(view->glx_display, view->glx_window);
    
    TIMER_STOP_PRINT("View: GlxRender");
    
    usleep(1000);
}
コード例 #5
0
void core_loop(void) {

    SDL_Event event;
    while (! app.exit) {
        while (SDL_PollEvent(&event)) {
            event_handle(&event);
        }

        if (! timer.paused) {
            process_update();
            view_update();
        }
        view_render();

        timer_step();
    }
}
コード例 #6
0
ファイル: view.c プロジェクト: AlexKordic/gpujpeg
void
view_glut_render()
{
    struct view* view = g_glut_view;
    if ( view == NULL )
        return;
    
    TIMER_INIT();
    TIMER_START();
    
    view_render(view);
    
    glutSwapBuffers();
    
    TIMER_STOP_PRINT("View: GlutRender");
    
    usleep(1000);
    
    glutPostRedisplay();
}
コード例 #7
0
ファイル: view.c プロジェクト: mvanderkolff/navi-misc
static void
on_gl_context_realize (GLDrawingArea *context, View *view)
{
  view->camera->azimuth = 45;
  view->camera->elevation = 25;
  view->camera->distance = 900;
  view->camera->position[2] = 4;

  gl_drawing_area_make_current (context);

  g_signal_connect (G_OBJECT (context), "configure-event", G_CALLBACK (view_configure), (gpointer) view);
  g_signal_connect (G_OBJECT (context), "expose-event", G_CALLBACK (view_expose), (gpointer) view);
  g_signal_connect (G_OBJECT (context), "scroll-event", G_CALLBACK (view_scroll), (gpointer) view);
  g_signal_connect (G_OBJECT (context), "button-press-event", G_CALLBACK (view_click), (gpointer) view);
  g_signal_connect (G_OBJECT (context), "motion-notify-event", G_CALLBACK (view_motion), (gpointer) view);

  init_lighting (view);
  scene_add_view (view->scene, (gpointer) view);
  view_resize (view);
  view_render (view);
}
コード例 #8
0
ファイル: view.c プロジェクト: mvanderkolff/navi-misc
static gboolean
view_motion (GLDrawingArea *widget, GdkEvent *event, View *view)
{
  double delta_x, delta_y;
  double current_x, current_y;

  /* This could be an actual motion event or it could just be a motion hint
   * from GDK_POINTER_MOTION_HINT_MASK. If it's a hint, we have to ask for
   * the current mouse position. This ensures we're always drawing with the
   * current mouse position, rather than queueing mouse positions.
   */
  if (event->motion.is_hint) {
    gint ix, iy;
    gdk_window_get_pointer(event->motion.window, &ix, &iy, NULL);
    current_x = ix;
    current_y = iy;
  }
  else {
    current_x = event->motion.x;
    current_y = event->motion.y;
  }

  delta_x = current_x - view->mouse[0];
  delta_y = current_y - view->mouse[1];
  view->mouse[0] = current_x;
  view->mouse[1] = current_y;

  view->camera->azimuth -= delta_x / 5;
  view->camera->elevation += delta_y / 5;
  if (view->camera->elevation < 0)
    view->camera->elevation = 0;
  if (view->camera->elevation > 90)
    view->camera->elevation = 90;
  view_render (view);

  return TRUE;
}
コード例 #9
0
ファイル: viewglut.c プロジェクト: popasquat89/ME4573
void viewglut_render(const viewglut *P)
{
    /* Don't render the path during play mode. */

    if (P->state != st_play_fwd &&
            P->state != st_play_rev)
    {
        /* Preserve the current GL state. */

        glPushAttrib(GL_LINE_BIT         |
                     GL_POINT_BIT        |
                     GL_CURRENT_BIT      |
                     GL_LIGHTING_BIT     |
                     GL_COLOR_BUFFER_BIT |
                     GL_DEPTH_BUFFER_BIT);
        {
            /* Get set up for unlit transparent rendering. */

            glDisable(GL_LIGHTING);
            glDepthMask(GL_FALSE);
            glEnable(GL_BLEND);
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

            glPointSize(7.0);

            /* We'll need vertex arrays in the callback. */

            glEnableClientState(GL_VERTEX_ARRAY);
            {
                view_render(P->V, viewglut_render_state, (void *) P);
            }
            glDisableClientState(GL_VERTEX_ARRAY);
        }
        glPopAttrib();
    }
}