aboutsummaryrefslogtreecommitdiff
path: root/src/displaywindow.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/displaywindow.c')
-rw-r--r--src/displaywindow.c64
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);
+
+}
+