@openglobus/og 0.11.1 → 0.11.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +18 -20
- package/src/og/Clock.js +11 -11
- package/src/og/Deferred.js +1 -1
- package/src/og/Events.js +9 -7
- package/src/og/Extent.js +117 -72
- package/src/og/Globe.js +35 -22
- package/src/og/ImageCanvas.js +24 -18
- package/src/og/Lock.js +2 -2
- package/src/og/LonLat.js +40 -37
- package/src/og/Popup.js +21 -15
- package/src/og/QueueArray.js +7 -3
- package/src/og/Rectangle.js +11 -6
- package/src/og/Stack.js +8 -5
- package/src/og/ajax.js +21 -33
- package/src/og/astro/astro.js +5 -5
- package/src/og/astro/earth.js +23 -17
- package/src/og/astro/jd.js +44 -39
- package/src/og/astro/orbit.js +20 -18
- package/src/og/astro/rotation.js +17 -8
- package/src/og/bv/Box.js +7 -3
- package/src/og/bv/Sphere.js +17 -9
- package/src/og/camera/Camera.js +137 -86
- package/src/og/camera/Frustum.js +30 -19
- package/src/og/camera/PlanetCamera.js +30 -26
- package/src/og/control/CompassButton.js +8 -2
- package/src/og/control/Control.js +13 -11
- package/src/og/control/DebugInfo.js +4 -1
- package/src/og/control/EarthCoordinates.js +62 -41
- package/src/og/control/EarthNavigation.js +20 -22
- package/src/og/control/GeoImageDragControl.js +1 -1
- package/src/og/control/KeyboardNavigation.js +12 -12
- package/src/og/control/LayerSwitcher.js +24 -23
- package/src/og/control/Lighting.js +1 -1
- package/src/og/control/MouseNavigation.js +1 -1
- package/src/og/control/ScaleControl.js +1 -1
- package/src/og/control/SegmentBoundVisualization.js +8 -9
- package/src/og/control/ShowFps.js +15 -10
- package/src/og/control/SimpleNavigation.js +8 -10
- package/src/og/control/Sun.js +25 -15
- package/src/og/control/ToggleWireframe.js +5 -5
- package/src/og/control/TouchNavigation.js +58 -45
- package/src/og/control/ZoomControl.js +41 -25
- package/src/og/control/index.js +4 -0
- package/src/og/ellipsoid/Ellipsoid.js +181 -85
- package/src/og/ellipsoid/wgs84.js +4 -4
- package/src/og/entity/BaseBillboard.js +97 -44
- package/src/og/entity/Billboard.js +15 -11
- package/src/og/entity/BillboardHandler.js +314 -64
- package/src/og/entity/Entity.js +106 -74
- package/src/og/entity/EntityCollection.js +72 -49
- package/src/og/entity/GeoObject.js +228 -0
- package/src/og/entity/GeoObjectHandler.js +910 -0
- package/src/og/entity/Geometry.js +29 -26
- package/src/og/entity/GeometryHandler.js +598 -126
- package/src/og/entity/Label.js +74 -40
- package/src/og/entity/LabelHandler.js +47 -246
- package/src/og/entity/LabelWorker.js +213 -0
- package/src/og/entity/Object3d.js +504 -0
- package/src/og/entity/PointCloud.js +81 -33
- package/src/og/entity/PointCloudHandler.js +9 -9
- package/src/og/entity/Polyline.js +39 -39
- package/src/og/entity/Ray.js +61 -28
- package/src/og/entity/ShapeHandler.js +1 -1
- package/src/og/entity/Strip.js +77 -48
- package/src/og/entity/StripHandler.js +27 -27
- package/src/og/entity/index.js +8 -16
- package/src/og/input/KeyboardHandler.js +107 -104
- package/src/og/input/MouseHandler.js +81 -78
- package/src/og/input/TouchHandler.js +55 -51
- package/src/og/layer/BaseGeoImage.js +61 -30
- package/src/og/layer/CanvasTiles.js +26 -24
- package/src/og/layer/GeoImage.js +10 -10
- package/src/og/layer/GeoTexture2d.js +1 -1
- package/src/og/layer/GeoVideo.js +3 -3
- package/src/og/layer/KML.js +66 -40
- package/src/og/layer/Layer.js +27 -17
- package/src/og/layer/Material.js +93 -61
- package/src/og/layer/Vector.js +118 -72
- package/src/og/layer/WMS.js +36 -19
- package/src/og/layer/XYZ.js +55 -48
- package/src/og/light/LightSource.js +47 -40
- package/src/og/math/Line2.js +24 -24
- package/src/og/math/Line3.js +103 -102
- package/src/og/math/Mat3.js +134 -121
- package/src/og/math/Mat4.js +603 -459
- package/src/og/math/Plane.js +21 -20
- package/src/og/math/Quat.js +980 -927
- package/src/og/math/Ray.js +195 -187
- package/src/og/math/Vec2.js +127 -117
- package/src/og/math/Vec3.js +206 -176
- package/src/og/math/Vec4.js +49 -53
- package/src/og/math/coder.js +18 -18
- package/src/og/math.js +12 -12
- package/src/og/mercator.js +11 -11
- package/src/og/proj/EPSG3857.js +4 -4
- package/src/og/proj/EPSG4326.js +4 -4
- package/src/og/proj/Proj.js +31 -31
- package/src/og/quadTree/EntityCollectionNode.js +310 -300
- package/src/og/quadTree/Node.js +1008 -993
- package/src/og/renderer/Renderer.js +768 -747
- package/src/og/renderer/RendererEvents.js +9 -6
- package/src/og/scene/Axes.js +1 -1
- package/src/og/scene/BaseNode.js +8 -9
- package/src/og/scene/Planet.js +115 -87
- package/src/og/scene/RenderNode.js +29 -22
- package/src/og/scene/SkyBox.js +1 -1
- package/src/og/segment/Segment.js +1886 -1878
- package/src/og/segment/SegmentLonLat.js +298 -268
- package/src/og/segment/segmentHelper.js +11 -11
- package/src/og/shaders/bloom.js +1 -1
- package/src/og/shaders/blur.js +2 -2
- package/src/og/shaders/depth.js +1 -1
- package/src/og/shaders/geoObject.js +211 -0
- package/src/og/shaders/label.js +1 -1
- package/src/og/shaders/lumFilter.js +1 -1
- package/src/og/shaders/pointCloud.js +42 -42
- package/src/og/shaders/screenFrame.js +1 -1
- package/src/og/shaders/shape.js +15 -21
- package/src/og/shaders/skybox.js +37 -37
- package/src/og/shaders/toneMapping.js +1 -1
- package/src/og/shapes/BaseShape.js +129 -57
- package/src/og/shapes/Icosphere.js +30 -15
- package/src/og/shapes/Sphere.js +13 -16
- package/src/og/terrain/BilTerrain.js +2 -1
- package/src/og/terrain/EmptyTerrain.js +2 -2
- package/src/og/terrain/Geoid.js +2 -2
- package/src/og/terrain/GlobusTerrain.js +10 -10
- package/src/og/terrain/MapboxTerrain.js +1 -1
- package/src/og/utils/GeoImageCreator.js +9 -9
- package/src/og/utils/Loader.js +6 -6
- package/src/og/utils/NormalMapCreator.js +13 -13
- package/src/og/utils/TerrainWorker.js +1 -1
- package/src/og/utils/TextureAtlas.js +20 -22
- package/src/og/utils/VectorTileCreator.js +5 -5
- package/src/og/utils/earcut.js +1 -1
- package/src/og/utils/shared.js +15 -15
- package/src/og/webgl/Framebuffer.js +101 -53
- package/src/og/webgl/Handler.js +125 -85
- package/src/og/webgl/Multisample.js +55 -27
- package/src/og/webgl/Program.js +80 -35
- package/src/og/webgl/ProgramController.js +27 -23
- package/src/og/webgl/callbacks.js +8 -8
- package/types/Clock.d.ts +6 -2
- package/types/Deferred.d.ts +1 -1
- package/types/Events.d.ts +8 -4
- package/types/Extent.d.ts +37 -33
- package/types/Globe.d.ts +15 -13
- package/types/ImageCanvas.d.ts +5 -3
- package/types/LonLat.d.ts +24 -24
- package/types/Popup.d.ts +4 -0
- package/types/QueueArray.d.ts +6 -2
- package/types/Rectangle.d.ts +10 -4
- package/types/Stack.d.ts +4 -0
- package/types/ajax.d.ts +1 -1
- package/types/astro/earth.d.ts +3 -2
- package/types/bv/Box.d.ts +10 -5
- package/types/bv/Sphere.d.ts +13 -7
- package/types/camera/Camera.d.ts +90 -81
- package/types/camera/Frustum.d.ts +26 -22
- package/types/camera/PlanetCamera.d.ts +49 -53
- package/types/control/CompassButton.d.ts +4 -4
- package/types/control/Control.d.ts +7 -4
- package/types/control/DebugInfo.d.ts +3 -4
- package/types/control/EarthCoordinates.d.ts +6 -6
- package/types/control/EarthNavigation.d.ts +42 -0
- package/types/control/KeyboardNavigation.d.ts +3 -4
- package/types/control/LayerSwitcher.d.ts +3 -5
- package/types/control/Lighting.d.ts +3 -3
- package/types/control/MouseNavigation.d.ts +47 -0
- package/types/control/ScaleControl.d.ts +3 -3
- package/types/control/ShowFps.d.ts +3 -4
- package/types/control/SimpleNavigation.d.ts +3 -6
- package/types/control/Sun.d.ts +8 -10
- package/types/control/ToggleWireframe.d.ts +3 -3
- package/types/control/TouchNavigation.d.ts +48 -0
- package/types/control/ZoomControl.d.ts +3 -4
- package/types/control/index.d.ts +3 -1
- package/types/ellipsoid/Ellipsoid.d.ts +47 -43
- package/types/ellipsoid/wgs84.d.ts +3 -2
- package/types/entity/BaseBillboard.d.ts +41 -34
- package/types/entity/Billboard.d.ts +7 -7
- package/types/entity/BillboardHandler.d.ts +4 -0
- package/types/entity/Entity.d.ts +101 -83
- package/types/entity/EntityCollection.d.ts +57 -43
- package/types/entity/GeoObject.d.ts +111 -0
- package/types/entity/GeoObjectHandler.d.ts +77 -0
- package/types/entity/Geometry.d.ts +9 -7
- package/types/entity/GeometryHandler.d.ts +2 -2
- package/types/entity/Label.d.ts +24 -29
- package/types/entity/LabelHandler.d.ts +9 -2
- package/types/entity/LabelWorker.d.ts +9 -0
- package/types/entity/PointCloud.d.ts +8 -8
- package/types/entity/PointCloudHandler.d.ts +3 -3
- package/types/entity/Polyline.d.ts +58 -55
- package/types/entity/Ray.d.ts +19 -18
- package/types/entity/Strip.d.ts +8 -7
- package/types/entity/StripHandler.d.ts +3 -3
- package/types/entity/index.d.ts +7 -7
- package/types/input/KeyboardHandler.d.ts +10 -0
- package/types/input/MouseHandler.d.ts +5 -0
- package/types/input/TouchHandler.d.ts +5 -0
- package/types/layer/BaseGeoImage.d.ts +23 -35
- package/types/layer/CanvasTiles.d.ts +15 -22
- package/types/layer/GeoImage.d.ts +5 -18
- package/types/layer/GeoVideo.d.ts +5 -30
- package/types/layer/KML.d.ts +20 -15
- package/types/layer/Layer.d.ts +326 -0
- package/types/layer/Material.d.ts +45 -0
- package/types/layer/Vector.d.ts +208 -0
- package/types/layer/WMS.d.ts +4 -7
- package/types/layer/XYZ.d.ts +19 -25
- package/types/light/LightSource.d.ts +54 -53
- package/types/math/Line2.d.ts +11 -0
- package/types/math/Line3.d.ts +10 -0
- package/types/math/Mat3.d.ts +30 -18
- package/types/math/Mat4.d.ts +71 -52
- package/types/math/Plane.d.ts +5 -4
- package/types/math/Quat.d.ts +379 -0
- package/types/math/Ray.d.ts +82 -0
- package/types/math/Vec2.d.ts +102 -101
- package/types/math/Vec3.d.ts +143 -142
- package/types/math/Vec4.d.ts +40 -39
- package/types/math/coder.d.ts +12 -11
- package/types/math.d.ts +8 -8
- package/types/mercator.d.ts +3 -3
- package/types/proj/EPSG3857.d.ts +3 -2
- package/types/proj/EPSG4326.d.ts +3 -2
- package/types/proj/Proj.d.ts +42 -0
- package/types/quadTree/EntityCollectionNode.d.ts +34 -0
- package/types/quadTree/Node.d.ts +61 -0
- package/types/renderer/Renderer.d.ts +300 -0
- package/types/renderer/RendererEvents.d.ts +10 -7
- package/types/scene/BaseNode.d.ts +9 -9
- package/types/scene/Planet.d.ts +131 -126
- package/types/scene/RenderNode.d.ts +22 -23
- package/types/segment/Segment.d.ts +279 -0
- package/types/segment/SegmentLonLat.d.ts +16 -0
- package/types/shaders/geoObject.d.ts +3 -0
- package/types/shapes/BaseShape.d.ts +43 -40
- package/types/shapes/Sphere.d.ts +7 -7
- package/types/terrain/BilTerrain.d.ts +0 -1
- package/types/terrain/EmptyTerrain.d.ts +4 -4
- package/types/terrain/GlobusTerrain.d.ts +17 -54
- package/types/terrain/MapboxTerrain.d.ts +0 -1
- package/types/utils/GeoImageCreator.d.ts +3 -2
- package/types/utils/TextureAtlas.d.ts +8 -8
- package/types/utils/shared.d.ts +25 -24
- package/types/webgl/Framebuffer.d.ts +5 -5
- package/types/webgl/Handler.d.ts +68 -43
- package/types/webgl/Multisample.d.ts +5 -5
- package/types/webgl/Program.d.ts +8 -2
- package/types/webgl/ProgramController.d.ts +18 -13
- package/src/og/inherits.js +0 -8
- package/src/og/utils/polylabel.js +0 -176
- package/types/inherits.d.ts +0 -4
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* @module og/webgl/Framebuffer
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
"use strict";
|
|
6
6
|
|
|
7
|
-
import { ImageCanvas } from
|
|
7
|
+
import { ImageCanvas } from "../ImageCanvas.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Class represents framebuffer.
|
|
11
11
|
* @class
|
|
12
|
-
* @param {
|
|
12
|
+
* @param {Handler} handler - WebGL handler.
|
|
13
13
|
* @param {Object} [options] - Framebuffer options:
|
|
14
14
|
* @param {number} [options.width] - Framebuffer width. Default is handler canvas width.
|
|
15
15
|
* @param {number} [options.height] - Framebuffer height. Default is handler canvas height.
|
|
@@ -21,13 +21,11 @@ import { ImageCanvas } from '../ImageCanvas.js';
|
|
|
21
21
|
* @param {Boolean} [options.useDepth] - Using depth buffer during the rendering.
|
|
22
22
|
*/
|
|
23
23
|
export class Framebuffer {
|
|
24
|
-
|
|
25
24
|
constructor(handler, options = {}) {
|
|
26
|
-
|
|
27
25
|
/**
|
|
28
26
|
* WebGL handler.
|
|
29
27
|
* @public
|
|
30
|
-
* @type {
|
|
28
|
+
* @type {Handler}
|
|
31
29
|
*/
|
|
32
30
|
this.handler = handler;
|
|
33
31
|
|
|
@@ -49,20 +47,27 @@ export class Framebuffer {
|
|
|
49
47
|
|
|
50
48
|
this._filter = options.filter || "NEAREST";
|
|
51
49
|
|
|
52
|
-
this._internalFormatArr =
|
|
50
|
+
this._internalFormatArr =
|
|
51
|
+
options.internalFormat instanceof Array
|
|
52
|
+
? options.internalFormat
|
|
53
|
+
: [options.internalFormat || "RGBA"];
|
|
53
54
|
|
|
54
|
-
this._formatArr =
|
|
55
|
+
this._formatArr =
|
|
56
|
+
options.format instanceof Array ? options.format : [options.format || "RGBA"];
|
|
55
57
|
|
|
56
|
-
this._typeArr =
|
|
58
|
+
this._typeArr =
|
|
59
|
+
options.type instanceof Array ? options.type : [options.type || "UNSIGNED_BYTE"];
|
|
57
60
|
|
|
58
|
-
this._attachmentArr =
|
|
59
|
-
options.attachment
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
this._attachmentArr =
|
|
62
|
+
options.attachment instanceof Array
|
|
63
|
+
? options.attachment.map((a, i) => {
|
|
64
|
+
let res = a.toUpperCase();
|
|
65
|
+
if (res === "COLOR_ATTACHMENT") {
|
|
66
|
+
return `${res}${i.toString()}`;
|
|
67
|
+
}
|
|
68
|
+
return res;
|
|
69
|
+
})
|
|
70
|
+
: [options.attachment || "COLOR_ATTACHMENT0"];
|
|
66
71
|
|
|
67
72
|
/**
|
|
68
73
|
* Framebuffer width.
|
|
@@ -78,12 +83,13 @@ export class Framebuffer {
|
|
|
78
83
|
*/
|
|
79
84
|
this._height = options.height || handler.canvas.height;
|
|
80
85
|
|
|
81
|
-
this._depthComponent =
|
|
86
|
+
this._depthComponent =
|
|
87
|
+
options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
|
|
82
88
|
|
|
83
89
|
this._useDepth = options.useDepth != undefined ? options.useDepth : true;
|
|
84
90
|
|
|
85
91
|
/**
|
|
86
|
-
* Framebuffer activity.
|
|
92
|
+
* Framebuffer activity.
|
|
87
93
|
* @private
|
|
88
94
|
* @type {boolean}
|
|
89
95
|
*/
|
|
@@ -97,28 +103,34 @@ export class Framebuffer {
|
|
|
97
103
|
* @type {number}
|
|
98
104
|
*/
|
|
99
105
|
this.textures = options.textures || new Array(this._size);
|
|
100
|
-
}
|
|
106
|
+
}
|
|
101
107
|
|
|
102
108
|
static blit(sourceFramebuffer, destFramebuffer, glAttachment, glMask, glFilter) {
|
|
103
|
-
|
|
104
109
|
let gl = sourceFramebuffer.handler.gl;
|
|
105
110
|
|
|
106
111
|
gl.bindFramebuffer(gl.READ_FRAMEBUFFER, sourceFramebuffer._fbo);
|
|
107
|
-
gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER,
|
|
112
|
+
gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, destFramebuffer._fbo);
|
|
108
113
|
gl.readBuffer(glAttachment);
|
|
109
114
|
|
|
110
115
|
gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]);
|
|
111
116
|
|
|
112
117
|
gl.blitFramebuffer(
|
|
113
|
-
0,
|
|
114
|
-
0,
|
|
115
|
-
|
|
118
|
+
0,
|
|
119
|
+
0,
|
|
120
|
+
sourceFramebuffer._width,
|
|
121
|
+
sourceFramebuffer._height,
|
|
122
|
+
0,
|
|
123
|
+
0,
|
|
124
|
+
destFramebuffer._width,
|
|
125
|
+
destFramebuffer._height,
|
|
126
|
+
glMask,
|
|
127
|
+
glFilter
|
|
116
128
|
);
|
|
117
129
|
|
|
118
130
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
119
131
|
gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);
|
|
120
132
|
gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);
|
|
121
|
-
}
|
|
133
|
+
}
|
|
122
134
|
|
|
123
135
|
destroy() {
|
|
124
136
|
var gl = this.handler.gl;
|
|
@@ -135,7 +147,7 @@ export class Framebuffer {
|
|
|
135
147
|
this._fbo = null;
|
|
136
148
|
|
|
137
149
|
this._active = false;
|
|
138
|
-
}
|
|
150
|
+
}
|
|
139
151
|
|
|
140
152
|
/**
|
|
141
153
|
* Framebuffer initialization.
|
|
@@ -151,8 +163,8 @@ export class Framebuffer {
|
|
|
151
163
|
if (!this._isBare) {
|
|
152
164
|
let attachmentArr = [];
|
|
153
165
|
for (var i = 0; i < this.textures.length; i++) {
|
|
154
|
-
|
|
155
|
-
|
|
166
|
+
let ti =
|
|
167
|
+
this.textures[i] ||
|
|
156
168
|
this.handler.createEmptyTexture2DExt(
|
|
157
169
|
this._width,
|
|
158
170
|
this._height,
|
|
@@ -178,15 +190,25 @@ export class Framebuffer {
|
|
|
178
190
|
if (this._useDepth) {
|
|
179
191
|
this._depthRenderbuffer = gl.createRenderbuffer();
|
|
180
192
|
gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
|
|
181
|
-
gl.renderbufferStorage(
|
|
182
|
-
|
|
193
|
+
gl.renderbufferStorage(
|
|
194
|
+
gl.RENDERBUFFER,
|
|
195
|
+
gl[this._depthComponent],
|
|
196
|
+
this._width,
|
|
197
|
+
this._height
|
|
198
|
+
);
|
|
199
|
+
gl.framebufferRenderbuffer(
|
|
200
|
+
gl.FRAMEBUFFER,
|
|
201
|
+
gl.DEPTH_ATTACHMENT,
|
|
202
|
+
gl.RENDERBUFFER,
|
|
203
|
+
this._depthRenderbuffer
|
|
204
|
+
);
|
|
183
205
|
gl.bindRenderbuffer(gl.RENDERBUFFER, null);
|
|
184
206
|
}
|
|
185
207
|
|
|
186
208
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
187
209
|
|
|
188
210
|
return this;
|
|
189
|
-
}
|
|
211
|
+
}
|
|
190
212
|
|
|
191
213
|
/**
|
|
192
214
|
* Bind buffer texture.
|
|
@@ -197,9 +219,15 @@ export class Framebuffer {
|
|
|
197
219
|
bindOutputTexture(texture, glAttachment) {
|
|
198
220
|
var gl = this.handler.gl;
|
|
199
221
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
200
|
-
gl.framebufferTexture2D(
|
|
222
|
+
gl.framebufferTexture2D(
|
|
223
|
+
gl.FRAMEBUFFER,
|
|
224
|
+
glAttachment || gl.COLOR_ATTACHMENT0,
|
|
225
|
+
gl.TEXTURE_2D,
|
|
226
|
+
texture,
|
|
227
|
+
0
|
|
228
|
+
);
|
|
201
229
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
202
|
-
}
|
|
230
|
+
}
|
|
203
231
|
|
|
204
232
|
/**
|
|
205
233
|
* Sets framebuffer viewport size.
|
|
@@ -219,7 +247,7 @@ export class Framebuffer {
|
|
|
219
247
|
this.destroy();
|
|
220
248
|
this.init();
|
|
221
249
|
}
|
|
222
|
-
}
|
|
250
|
+
}
|
|
223
251
|
|
|
224
252
|
/**
|
|
225
253
|
* Returns framebuffer completed.
|
|
@@ -232,7 +260,7 @@ export class Framebuffer {
|
|
|
232
260
|
return true;
|
|
233
261
|
}
|
|
234
262
|
return false;
|
|
235
|
-
}
|
|
263
|
+
}
|
|
236
264
|
|
|
237
265
|
/**
|
|
238
266
|
* Gets pixel RBGA color from framebuffer by coordinates.
|
|
@@ -248,9 +276,17 @@ export class Framebuffer {
|
|
|
248
276
|
var gl = this.handler.gl;
|
|
249
277
|
gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
|
|
250
278
|
gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + index || 0);
|
|
251
|
-
gl.readPixels(
|
|
279
|
+
gl.readPixels(
|
|
280
|
+
nx * this._width,
|
|
281
|
+
ny * this._height,
|
|
282
|
+
w,
|
|
283
|
+
h,
|
|
284
|
+
gl.RGBA,
|
|
285
|
+
gl[this._typeArr[index]],
|
|
286
|
+
res
|
|
287
|
+
);
|
|
252
288
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
253
|
-
}
|
|
289
|
+
}
|
|
254
290
|
|
|
255
291
|
/**
|
|
256
292
|
* Reads all pixels(RGBA colors) from framebuffer.
|
|
@@ -262,14 +298,22 @@ export class Framebuffer {
|
|
|
262
298
|
var gl = this.handler.gl;
|
|
263
299
|
gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo);
|
|
264
300
|
gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex);
|
|
265
|
-
gl.readPixels(
|
|
301
|
+
gl.readPixels(
|
|
302
|
+
0,
|
|
303
|
+
0,
|
|
304
|
+
this._width,
|
|
305
|
+
this._height,
|
|
306
|
+
gl.RGBA,
|
|
307
|
+
gl[this._typeArr[attachmentIndex]],
|
|
308
|
+
res
|
|
309
|
+
);
|
|
266
310
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
267
|
-
}
|
|
311
|
+
}
|
|
268
312
|
|
|
269
313
|
/**
|
|
270
314
|
* Activate framebuffer frame to draw.
|
|
271
315
|
* @public
|
|
272
|
-
* @returns {
|
|
316
|
+
* @returns {Framebuffer} Returns Current framebuffer.
|
|
273
317
|
*/
|
|
274
318
|
activate() {
|
|
275
319
|
var gl = this.handler.gl;
|
|
@@ -281,7 +325,7 @@ export class Framebuffer {
|
|
|
281
325
|
c && (c._active = false);
|
|
282
326
|
this.handler.framebufferStack.push(this);
|
|
283
327
|
return this;
|
|
284
|
-
}
|
|
328
|
+
}
|
|
285
329
|
|
|
286
330
|
/**
|
|
287
331
|
* Deactivate framebuffer frame.
|
|
@@ -301,7 +345,7 @@ export class Framebuffer {
|
|
|
301
345
|
} else {
|
|
302
346
|
gl.viewport(0, 0, h.canvas.width, h.canvas.height);
|
|
303
347
|
}
|
|
304
|
-
}
|
|
348
|
+
}
|
|
305
349
|
|
|
306
350
|
/**
|
|
307
351
|
* Gets JavaScript image object that framebuffer has drawn.
|
|
@@ -314,7 +358,7 @@ export class Framebuffer {
|
|
|
314
358
|
var imageCanvas = new ImageCanvas(this._width, this._height);
|
|
315
359
|
imageCanvas.setData(data);
|
|
316
360
|
return imageCanvas.getImage();
|
|
317
|
-
}
|
|
361
|
+
}
|
|
318
362
|
|
|
319
363
|
/**
|
|
320
364
|
* Open dialog window with framebuffer image.
|
|
@@ -323,17 +367,21 @@ export class Framebuffer {
|
|
|
323
367
|
openImage() {
|
|
324
368
|
var img = this.getImage();
|
|
325
369
|
var dataUrl = img.src;
|
|
326
|
-
var windowContent =
|
|
327
|
-
windowContent +=
|
|
328
|
-
windowContent +=
|
|
329
|
-
windowContent +=
|
|
370
|
+
var windowContent = "<!DOCTYPE html>";
|
|
371
|
+
windowContent += "<html>";
|
|
372
|
+
windowContent += "<head><title>Print</title></head>";
|
|
373
|
+
windowContent += "<body>";
|
|
330
374
|
windowContent += '<img src="' + dataUrl + '">';
|
|
331
|
-
windowContent +=
|
|
332
|
-
windowContent +=
|
|
333
|
-
var printWin = window.open(
|
|
375
|
+
windowContent += "</body>";
|
|
376
|
+
windowContent += "</html>";
|
|
377
|
+
var printWin = window.open(
|
|
378
|
+
"",
|
|
379
|
+
"",
|
|
380
|
+
"width=" + img.width + "px ,height=" + img.height + "px"
|
|
381
|
+
);
|
|
334
382
|
printWin.document.open();
|
|
335
383
|
printWin.document.write(windowContent);
|
|
336
384
|
printWin.document.close();
|
|
337
385
|
printWin.focus();
|
|
338
|
-
}
|
|
339
|
-
}
|
|
386
|
+
}
|
|
387
|
+
}
|