int draw (GtkWidget *widget, GdkEventExpose *event) { if (event->count > 0) return TRUE; if (gtk_gl_area_make_current (GTK_GL_AREA(widget))) { glClearColor(0,0,0,1); glClear(GL_COLOR_BUFFER_BIT); glColor3f(0,0.2,0.8); glBegin(GL_TRIANGLES); glVertex2f(10,10); glVertex2f(10,90); glVertex2f(90,90); glEnd(); gtk_gl_area_swap_buffers (GTK_GL_AREA(widget)); } return TRUE; }
gboolean draw(GtkWidget *widget, cairo_t *cr) { if (gtk_gl_area_make_current(GTK_GL_AREA(widget))) { glViewport(0,0, gtk_widget_get_allocated_width(widget), gtk_widget_get_allocated_height (widget)); /* draw a triangle */ glClearColor(0,0,0,1); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,1,1); glBegin(GL_TRIANGLES); glVertex2f(10,10); glVertex2f(10,90); glVertex2f(90,90); glEnd(); /* refresh-draw ! */ gtk_gl_area_swap_buffers (GTK_GL_AREA(widget)); } return TRUE; }