Skip to content
Snippets Groups Projects
Commit f62a431e authored by Alexander Rose's avatar Alexander Rose
Browse files

faster gl buffer deletion

parent eecf0f31
No related branches found
No related tags found
No related merge requests found
......@@ -126,6 +126,7 @@ namespace Canvas3D {
let pickDirty = true
let isPicking = false
let isUpdating = false
let drawPending = false
let lastRenderTime = -1
......@@ -182,7 +183,7 @@ namespace Canvas3D {
}
function render(variant: RenderVariant, force: boolean) {
if (isPicking) return false
if (isPicking || isUpdating) return false
let didRender = false
controls.update()
......@@ -285,6 +286,7 @@ namespace Canvas3D {
}
function add(repr: Representation.Any) {
isUpdating = true
const oldRO = reprRenderObjects.get(repr)
const newRO = new Set<RenderObject>()
repr.renderObjects.forEach(o => newRO.add(o))
......@@ -299,6 +301,7 @@ namespace Canvas3D {
reprCount.next(reprRenderObjects.size)
boundingSphereHelper.update()
scene.update()
isUpdating = false
requestDraw(true)
}
......@@ -329,11 +332,13 @@ namespace Canvas3D {
}
const renderObjects = reprRenderObjects.get(repr)
if (renderObjects) {
isUpdating = true
renderObjects.forEach(o => scene.remove(o))
reprRenderObjects.delete(repr)
reprCount.next(reprRenderObjects.size)
boundingSphereHelper.update()
scene.update()
isUpdating = false
requestDraw(true)
}
},
......
......@@ -142,9 +142,6 @@ export function createBuffer(ctx: WebGLContext, array: ArrayType, itemSize: Buff
destroy: () => {
if (destroyed) return
gl.bindBuffer(_bufferType, _buffer);
// set size to 1 before deleting
(gl as WebGLRenderingContext).bufferData(_bufferType, 1, _usageHint) // TODO remove cast when webgl2 types are fixed
gl.deleteBuffer(_buffer)
destroyed = true
ctx.bufferCount -= 1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment