X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fgrits-opengl.c;h=c14593e1e9be276607b88325080edc549e2b91e6;hp=0e803baf3b5abd6a30e141bde022075254223123;hb=bed3380cb43b0d9cfcb2da34fda9bb36258ae46d;hpb=ecb7a9abd329d604506ea1734d2db72760fcb4f4 diff --git a/src/grits-opengl.c b/src/grits-opengl.c index 0e803ba..c14593e 100644 --- a/src/grits-opengl.c +++ b/src/grits-opengl.c @@ -40,6 +40,8 @@ // #define ROAM_DEBUG +#define OVERLAY_SLICE 0.01 + /* Tessellation, "finding intersecting triangles" */ /* http://research.microsoft.com/pubs/70307/tr-2006-81.pdf */ /* http://www.opengl.org/wiki/Alpha_Blending */ @@ -312,9 +314,10 @@ static void _draw_level(gpointer _level, gpointer _opengl) /* Enable depth and alpha for world levels */ glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.1); + glDepthRange(OVERLAY_SLICE, 1); } else { - /* Disable depth for Overlay/HUD levels */ - glDepthMask(FALSE); + /* Draw overlay in front of world */ + glDepthRange(0, OVERLAY_SLICE); } /* Start ortho */ @@ -396,23 +399,23 @@ static gboolean on_expose(GritsOpenGL *opengl, GdkEventExpose *event, gpointer _ static gboolean on_key_press(GritsOpenGL *opengl, GdkEventKey *event, gpointer _) { g_debug("GritsOpenGL: on_key_press - key=%x, state=%x, plus=%x", - event->keyval, event->state, GDK_plus); + event->keyval, event->state, GDK_KEY_plus); guint kv = event->keyval; /* Testing */ - if (kv == GDK_w) { + if (kv == GDK_KEY_w) { opengl->wireframe = !opengl->wireframe; grits_viewer_queue_draw(GRITS_VIEWER(opengl)); } - if (kv == GDK_p) { + if (kv == GDK_KEY_p) { opengl->pickmode = !opengl->pickmode; grits_viewer_queue_draw(GRITS_VIEWER(opengl)); } #ifdef ROAM_DEBUG - else if (kv == GDK_n) roam_sphere_split_one(opengl->sphere); - else if (kv == GDK_p) roam_sphere_merge_one(opengl->sphere); - else if (kv == GDK_r) roam_sphere_split_merge(opengl->sphere); - else if (kv == GDK_u) roam_sphere_update_errors(opengl->sphere); + else if (kv == GDK_KEY_n) roam_sphere_split_one(opengl->sphere); + else if (kv == GDK_KEY_p) roam_sphere_merge_one(opengl->sphere); + else if (kv == GDK_KEY_r) roam_sphere_split_merge(opengl->sphere); + else if (kv == GDK_KEY_u) roam_sphere_update_errors(opengl->sphere); grits_viewer_queue_draw(GRITS_VIEWER(opengl)); #endif return FALSE; @@ -512,6 +515,7 @@ static void grits_opengl_unproject(GritsViewer *_opengl, glReadPixels(px, py, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &tmp); pz = tmp; } + pz = (pz-OVERLAY_SLICE) * (1.0/(1-OVERLAY_SLICE)); gluUnProject(px, py, pz, opengl->sphere->view->model, opengl->sphere->view->proj,