]> Pileus Git - grits/blobdiff - src/gis-opengl.c
Add preliminary support for points/markers
[grits] / src / gis-opengl.c
index 866eac8c15f67e6dc7ec89a557c11ee8e645ff27..0352fce0a75ba8713390b46a165052af0fd9a93a 100644 (file)
@@ -105,6 +105,8 @@ static void set_visuals(GisOpenGL *self)
 
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
        //glShadeModel(GL_FLAT);
+
+       roam_sphere_update_view(self->sphere);
 }
 
 
@@ -286,6 +288,19 @@ void gis_opengl_center_position(GisOpenGL *self, gdouble lat, gdouble lon, gdoub
        glTranslatef(0, 0, elev2rad(elev));
 }
 
+void gis_opengl_project(GisOpenGL *self,
+               gdouble lat, gdouble lon, gdouble elev,
+               gdouble *px, gdouble *py, gdouble *pz)
+{
+       gdouble x, y, z;
+       lle2xyz(lat, lon, elev, &x, &y, &z);
+       gluProject(x, y, z,
+               self->sphere->view->model,
+               self->sphere->view->proj,
+               self->sphere->view->view,
+               px, py, pz);
+}
+
 void gis_opengl_render_tile(GisOpenGL *self, GisTile *tile)
 {
        if (!tile || !tile->data)
@@ -399,8 +414,6 @@ void gis_opengl_begin(GisOpenGL *self)
 {
        g_assert(GIS_IS_OPENGL(self));
 
-       gdk_threads_enter();
-
        GdkGLContext   *glcontext  = gtk_widget_get_gl_context(GTK_WIDGET(self));
        GdkGLDrawable  *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
 
@@ -412,7 +425,6 @@ void gis_opengl_end(GisOpenGL *self)
        g_assert(GIS_IS_OPENGL(self));
        GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
        gdk_gl_drawable_gl_end(gldrawable);
-       gdk_threads_leave();
 }
 void gis_opengl_flush(GisOpenGL *self)
 {