]> Pileus Git - grits/blobdiff - src/opengl.c
renaming to plugins
[grits] / src / opengl.c
index 09b41d5fa1aa8354d3bc41ebb2007542538a8f44..e9d4a7e3a0a6d44ea35d6f361e4b8ec1f4db4f8d 100644 (file)
@@ -22,9 +22,9 @@ static gboolean expose_start(GtkWidget *da, GdkEventExpose *event, gpointer user
 /* Plugins run stuff here */
 static gboolean expose_end(GtkWidget *da, GdkEventExpose *event, gpointer user_data)
 {
-       g_message("opengl:expose_end");
+       g_message("opengl:expose_end\n");
 
-       GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(da);
+       GdkGLDrawable *gldrawable = gdk_gl_drawable_get_current();
 
        if (gdk_gl_drawable_is_double_buffered(gldrawable))
                gdk_gl_drawable_swap_buffers(gldrawable);
@@ -47,27 +47,43 @@ static gboolean configure_start(GtkWidget *da, GdkEventConfigure *event, gpointe
        double width  = da->allocation.width;
        double height = da->allocation.height;
        double dist   = 500*1000; // 500 km
-       glViewport(0, 0, width, height);
 
+       /* Misc */
+       glViewport(0, 0, width, height);
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+       glClearColor(0.8f, 0.8f, 1.0f, 0.0f);
+
+       /* Tessellation, "finding intersecting triangles" */
+       /* http://research.microsoft.com/pubs/70307/tr-2006-81.pdf */
+       /* http://www.opengl.org/wiki/Alpha_Blending */
+       glAlphaFunc(GL_GREATER,0.1);
+       glEnable(GL_ALPHA_TEST);
 
+       /* Depth test */
+       glClearDepth(1.0);
+       glDepthFunc(GL_LEQUAL);
+       glEnable(GL_DEPTH_TEST);
+
+       /* Perspective */
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        double rad = atan(height/2*1000.0/dist); // 1px = 1000 meters
        double deg = (rad*180)/M_PI;
-       gluPerspective(deg*2, width/height, 0.1f, 10000000.0f);
+       gluPerspective(deg*2, width/height, dist-20, dist+20);
 
+       /* Camera position? */
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        glTranslatef(0.0, 0.0, -dist);
-       glRotatef(-45, 1, 0, 0);
+       //glRotatef(-45, 1, 0, 0);
+
 
        return FALSE;
 }
 static gboolean configure_end(GtkWidget *da, GdkEventConfigure *event, gpointer user_data)
 {
-       GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(da);
+       GdkGLDrawable *gldrawable = gdk_gl_drawable_get_current();
        gdk_gl_drawable_gl_end(gldrawable);
        return FALSE;
 }