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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
use glenum::{Attachment, FramebufferKind, RenderbufferKind};
use rendering_context::WebGL2RenderingContext;
use wasm_bindgen::prelude::*;
impl WebGL2RenderingContext {
pub fn create_renderbuffer(&self) -> WebGLRSRenderbuffer {
WebGLRSRenderbuffer {
context: self,
inner: self._create_renderbuffer(),
}
}
}
#[derive(Clone)]
pub struct WebGLRSRenderbuffer<'ctx> {
context: &'ctx WebGL2RenderingContext,
inner: WebGLRenderbuffer,
}
impl<'ctx> WebGLRSRenderbuffer<'ctx> {
pub fn delete(self) {
self.context._delete_renderbuffer(self.inner);
}
pub fn is_valid(&self) -> bool {
self.context._is_renderbuffer(&self.inner)
}
pub fn bind(&self, target: RenderbufferKind) {
self.context._bind_renderbuffer(target, &self.inner);
}
pub fn attach_framebuffer(
&self,
fb_target: FramebufferKind,
attachment: Attachment,
rb_target: RenderbufferKind,
) {
self.context
._framebuffer_renderbuffer(fb_target, attachment, rb_target, &self.inner);
}
}
#[wasm_bindgen]
#[derive(Clone, Copy)]
extern "C" {
#[derive(Clone)]
type WebGLRenderbuffer;
#[wasm_bindgen(method, js_name = createRenderbuffer)]
fn _create_renderbuffer(this: &WebGL2RenderingContext) -> WebGLRenderbuffer;
#[wasm_bindgen(method, js_name = framebufferRenderbuffer)]
fn _framebuffer_renderbuffer(
this: &WebGL2RenderingContext,
target: FramebufferKind,
attachment: Attachment,
renderbuffertarget: RenderbufferKind,
renderbuffer: &WebGLRenderbuffer,
);
#[wasm_bindgen(method, js_name = bindRenderbuffer)]
fn _bind_renderbuffer(
this: &WebGL2RenderingContext,
target: RenderbufferKind,
renderbuffer: &WebGLRenderbuffer,
);
#[wasm_bindgen(method, js_name = deleteRenderbuffer)]
fn _delete_renderbuffer(this: &WebGL2RenderingContext, renderbuffer: WebGLRenderbuffer);
#[wasm_bindgen(method, js_name = isRenderbuffer)]
fn _is_renderbuffer(this: &WebGL2RenderingContext, renderbuffer: &WebGLRenderbuffer) -> bool;
}