Webgl immediate implementation for points

Internally uses a replay group to share code.

Modifies the dynamic data example to use PointGeometry
and Feature in addition to MultiPoint.
This commit is contained in:
Guillaume Beraudo
2014-11-17 15:15:42 +01:00
parent 9681ec3e10
commit 20ceae2655
5 changed files with 219 additions and 11 deletions

View File

@@ -237,7 +237,16 @@ ol.renderer.webgl.Layer.prototype.dispatchComposeEvent_ =
function(type, context, frameState) {
var layer = this.getLayer();
if (layer.hasListener(type)) {
var render = new ol.render.webgl.Immediate(context, frameState.pixelRatio);
var viewState = frameState.viewState;
var resolution = viewState.resolution;
var pixelRatio = frameState.pixelRatio;
var extent = frameState.extent;
var center = viewState.center;
var rotation = viewState.rotation;
var size = frameState.size;
var render = new ol.render.webgl.Immediate(
context, center, resolution, rotation, size, extent, pixelRatio);
var composeEvent = new ol.render.Event(
type, layer, render, null, frameState, null, context);
layer.dispatchEvent(composeEvent);

View File

@@ -273,14 +273,19 @@ ol.renderer.webgl.Map.prototype.dispatchComposeEvent_ =
var map = this.getMap();
if (map.hasListener(type)) {
var context = this.context_;
var extent = frameState.extent;
var extent = frameState.extent;
var size = frameState.size;
var viewState = frameState.viewState;
var resolution = viewState.resolution;
var pixelRatio = frameState.pixelRatio;
var resolution = viewState.resolution;
var center = viewState.center;
var rotation = viewState.rotation;
var tolerance = ol.renderer.vector.getTolerance(resolution, pixelRatio);
var vectorContext = new ol.render.webgl.Immediate(context, pixelRatio);
var vectorContext = new ol.render.webgl.Immediate(context,
center, resolution, rotation, size, extent, pixelRatio);
var replayGroup = new ol.render.webgl.ReplayGroup(tolerance, extent);
var composeEvent = new ol.render.Event(type, map, vectorContext,
replayGroup, frameState, null, context);
@@ -288,9 +293,6 @@ ol.renderer.webgl.Map.prototype.dispatchComposeEvent_ =
replayGroup.finish(context);
if (!replayGroup.isEmpty()) {
var center = viewState.center;
var rotation = viewState.rotation;
var size = frameState.size;
// use default color values
var opacity = 1;
var brightness = 0;