/* Tessellation, "finding intersecting triangles" */
/* http://research.microsoft.com/pubs/70307/tr-2006-81.pdf */
/* http://www.opengl.org/wiki/Alpha_Blending */
/* Tessellation, "finding intersecting triangles" */
/* http://research.microsoft.com/pubs/70307/tr-2006-81.pdf */
/* http://www.opengl.org/wiki/Alpha_Blending */
static gboolean on_motion_notify(GritsOpenGL *opengl, GdkEventMotion *event, gpointer _)
{
opengl->mouse_queue = *event;
static gboolean on_motion_notify(GritsOpenGL *opengl, GdkEventMotion *event, gpointer _)
{
opengl->mouse_queue = *event;
/* Enable depth and alpha for world levels */
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.1);
/* Enable depth and alpha for world levels */
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.1);
}
#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);
}
#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);
glReadPixels(px, py, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &tmp);
pz = tmp;
}
glReadPixels(px, py, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &tmp);
pz = tmp;
}
gluUnProject(px, py, pz,
opengl->sphere->view->model,
opengl->sphere->view->proj,
gluUnProject(px, py, pz,
opengl->sphere->view->model,
opengl->sphere->view->proj,