Skip to content
michaelzangl edited this page Jun 15, 2015 · 5 revisions

This is the current project roadmap.

Timeline

This timeline may change as the project goes on.

  • Week 1-3 Already passed.
  • Week 4 More bug fixes to GLG2D (like alpha channel fixes, dashed two-color lines only drawing one color, ...)
  • Week 5 Make mouse events work, at least for hover and scrolling. Add redraw listener to redraw the OpenGL view whenever the normal view would be redrawn. Milestone We can now release a first test version. The main goal of testing would be to see, if there are problems with some graphic cards or if there are specific styles that are not supported.
  • Week 6 Split up OSM layer drawing to draw each primitive individually. Split up drawing of e.g. direction arrows.
  • Week 7 Cache the geometry for each primitive on a direct Buffer.
  • Week 8 Add all the listeners required to invalidate the cached geometry whenever something changes (viewport, zoom, data, ...)
  • Week 9 Try to combine geometries that are similar and can be drawn using the same buffer, to increase draw speed.
  • Week 10 MapCSS and buffer performance tests. Also work on bug 11382 to make MapCSS performance as good as possible.
  • Week 11 - (optimize depending on test results, fix bugs)
  • Week 12 -

Unordered TODO list

Tasks to do the next time

  • Set up coordinates for the OpenGL view.
  • Compute the set of OSM primitives to be rendered
    • Find out which OSM primitives moved into the view and which moved out of the view
  • Construct the geometry for each primitive according to the style definition (most of the work).
  • Render all geometries.
    • This should support displacement and textures.

Managing the geometries is done by grouping the geometries by Z-Layer and texture, then subdividing those groups if as soon as there are too many elements. We then use one VBO for each of the groups. The geometry is written to that VBO and then used to render those elements.

Generating the geometries is the hardest part. Some things might be ported from GLG2D.

Clone this wiki locally