diff options
Diffstat (limited to 'src/displaywindow.c')
-rw-r--r-- | src/displaywindow.c | 64 |
1 files changed, 25 insertions, 39 deletions
diff --git a/src/displaywindow.c b/src/displaywindow.c index d2afb67..64a4c41 100644 --- a/src/displaywindow.c +++ b/src/displaywindow.c @@ -29,50 +29,13 @@ #include "reflections.h" #include "main.h" #include "ipr.h" +#include "displaywindow.h" enum { DW_ORTHO, DW_PERSPECTIVE }; -typedef struct { - - ControlContext *ctx; - - GtkUIManager *ui; - GtkActionGroup *action_group; - GtkWidget *window; - GtkWidget *bigvbox; - GtkWidget *status_bar; - int view; - GtkWidget *drawing_area; - - /* OpenGL stuff */ - GLfloat distance; - GLfloat x_pos; - GLfloat y_pos; - float x_start; - float y_start; - float view_quat[4]; - int fog; - GLuint gl_list_id; /* Display list for "everything else" */ - int gl_use_buffers; /* 0=use vertex arrays only, otherwise use VBOs */ - GLuint gl_ref_vertex_buffer; /* "Measured reflection" stuff */ - GLfloat *gl_ref_vertex_array; - GLsizei gl_ref_num_vertices; - GLuint gl_marker_vertex_buffer; /* Marker "reflection" stuff */ - GLuint gl_marker_normal_buffer; - GLfloat *gl_marker_vertex_array; - GLfloat *gl_marker_normal_array; - GLsizei gl_marker_num_vertices; - GLuint gl_gen_vertex_buffer; /* Generated reflection stuff */ - GLuint gl_gen_normal_buffer; - GLfloat *gl_gen_vertex_array; - GLfloat *gl_gen_normal_array; - GLsizei gl_gen_num_vertices; - -} DisplayWindow; - static void displaywindow_about() { GtkWidget *window; @@ -810,7 +773,7 @@ DisplayWindow *displaywindow_open(ControlContext *ctx) { dw->view_quat[2] = 0.0; dw->view_quat[3] = 1.0; dw->ctx = ctx; - dw->fog = 1; + dw->fog = 0; dw->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(dw->window), title); @@ -850,3 +813,26 @@ DisplayWindow *displaywindow_open(ControlContext *ctx) { } +void displaywindow_update(DisplayWindow *dw) { + + if ( dw->gl_use_buffers ) { + glDeleteBuffersARB(1, &dw->gl_ref_vertex_buffer); + glDeleteBuffersARB(1, &dw->gl_marker_vertex_buffer); + glDeleteBuffersARB(1, &dw->gl_marker_normal_buffer); + glDeleteBuffersARB(1, &dw->gl_gen_vertex_buffer); + glDeleteBuffersARB(1, &dw->gl_gen_normal_buffer); + } else { + free(dw->gl_ref_vertex_array); + free(dw->gl_marker_vertex_array); + free(dw->gl_marker_normal_array); + free(dw->gl_gen_vertex_array); + free(dw->gl_gen_normal_array); + } + glDeleteLists(dw->gl_list_id, 1); + + displaywindow_gl_create_list(dw); + + gdk_window_invalidate_rect(dw->drawing_area->window, &dw->drawing_area->allocation, FALSE); + +} + |