Merge pull request #12020 from tschaub/delete-buffer
Fix WebGL buffer deletion
This commit is contained in:
@@ -410,8 +410,8 @@ class WebGLHelper extends Disposable {
|
|||||||
const gl = this.getGL();
|
const gl = this.getGL();
|
||||||
const bufferKey = getUid(buf);
|
const bufferKey = getUid(buf);
|
||||||
const bufferCacheEntry = this.bufferCache_[bufferKey];
|
const bufferCacheEntry = this.bufferCache_[bufferKey];
|
||||||
if (!gl.isContextLost()) {
|
if (bufferCacheEntry && !gl.isContextLost()) {
|
||||||
gl.deleteBuffer(bufferCacheEntry.buffer);
|
gl.deleteBuffer(bufferCacheEntry.webGlBuffer);
|
||||||
}
|
}
|
||||||
delete this.bufferCache_[bufferKey];
|
delete this.bufferCache_[bufferKey];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
|
import WebGLArrayBuffer from '../../../../src/ol/webgl/Buffer.js';
|
||||||
import WebGLHelper, {DefaultUniform} from '../../../../src/ol/webgl/Helper.js';
|
import WebGLHelper, {DefaultUniform} from '../../../../src/ol/webgl/Helper.js';
|
||||||
import {FLOAT} from '../../../../src/ol/webgl.js';
|
import {ARRAY_BUFFER, FLOAT, STATIC_DRAW} from '../../../../src/ol/webgl.js';
|
||||||
import {
|
import {
|
||||||
create as createTransform,
|
create as createTransform,
|
||||||
rotate as rotateTransform,
|
rotate as rotateTransform,
|
||||||
scale as scaleTransform,
|
scale as scaleTransform,
|
||||||
translate as translateTransform,
|
translate as translateTransform,
|
||||||
} from '../../../../src/ol/transform.js';
|
} from '../../../../src/ol/transform.js';
|
||||||
|
import {getUid} from '../../../../src/ol/util.js';
|
||||||
|
|
||||||
const VERTEX_SHADER = `
|
const VERTEX_SHADER = `
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
@@ -240,6 +242,20 @@ describe('ol/webgl/WebGLHelper', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('deleteBuffer()', function () {
|
||||||
|
it('can be called to free up buffer resources', function () {
|
||||||
|
const helper = new WebGLHelper();
|
||||||
|
const buffer = new WebGLArrayBuffer(ARRAY_BUFFER, STATIC_DRAW);
|
||||||
|
buffer.fromArray([0, 1, 2, 3]);
|
||||||
|
helper.flushBufferData(buffer);
|
||||||
|
const bufferKey = getUid(buffer);
|
||||||
|
expect(helper.bufferCache_).to.have.property(bufferKey);
|
||||||
|
|
||||||
|
helper.deleteBuffer(buffer);
|
||||||
|
expect(helper.bufferCache_).to.not.have.property(bufferKey);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('#createTexture', function () {
|
describe('#createTexture', function () {
|
||||||
let h;
|
let h;
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
|
|||||||
Reference in New Issue
Block a user