forked from regl-project/regl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathframebuffer-ref-count.js
66 lines (53 loc) · 2.27 KB
/
framebuffer-ref-count.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
var createContext = require('./util/create-context')
var createREGL = require('../regl')
var tape = require('tape')
tape('framebuffer - ref counting', function (t) {
var gl = createContext(16, 16)
var regl = createREGL(gl)
var simpleFBO = regl.framebuffer(5, 5)
t.equals(regl.stats.textureCount, 1, 'texture count ok')
t.equals(regl.stats.renderbufferCount, 1, 'renderbuffer count ok')
t.equals(regl.stats.framebufferCount, 1, 'framebuffer count ok')
simpleFBO.destroy()
t.equals(regl.stats.textureCount, 0, 'destroy texture ok')
t.equals(regl.stats.renderbufferCount, 0, 'destroy renderbuffer ok')
t.equals(regl.stats.framebufferCount, 0, 'destroy framebuffer ok')
t.throws(function () {
simpleFBO.destroy()
}, null, 'double destroying an fbo throws')
// now reuse a renderbuffer
var rb = regl.renderbuffer(5)
t.equals(regl.stats.renderbufferCount, 1, 'renderbuffer count ok')
var fbo = regl.framebuffer({
color: rb
})
t.equals(regl.stats.textureCount, 0, 'no new textures created')
t.equals(regl.stats.renderbufferCount, 2, 'exactly one depth buffer created')
t.equals(regl.stats.framebufferCount, 1, 'framebuffer count ok')
fbo.destroy()
t.equals(regl.stats.textureCount, 0, 'texture count ok')
t.equals(regl.stats.renderbufferCount, 1, 'renderbuffer count ok')
t.equals(regl.stats.framebufferCount, 0, 'framebuffer count ok')
rb.destroy()
t.equals(regl.stats.renderbufferCount, 0, 'destroy success')
// try reinitializing a framebuffer
var fbo2 = regl.framebuffer(5)
t.equals(regl.stats.textureCount, 1, 'texture count ok')
t.equals(regl.stats.renderbufferCount, 1, 'renderbuffer count ok')
t.equals(regl.stats.framebufferCount, 1, 'framebuffer count ok')
fbo2({
color: regl.renderbuffer(5)
})
t.equals(regl.stats.textureCount, 0, 'texture count ok')
t.equals(regl.stats.renderbufferCount, 2, 'renderbuffer count ok')
t.equals(regl.stats.framebufferCount, 1, 'framebuffer count ok')
fbo2.destroy()
t.equals(regl.stats.textureCount, 0, 'texture count ok')
t.equals(regl.stats.renderbufferCount, 1, 'renderbuffer count ok')
t.equals(regl.stats.framebufferCount, 0, 'framebuffer count ok')
// TODO: test for cubic FBOs.
regl.destroy()
t.equals(gl.getError(), 0, 'error ok')
createContext.destroy(gl)
t.end()
})