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
//! WebGLRenderbuffer and methods
use glenum::{Attachment, FramebufferKind, RenderbufferKind};
use rendering_context::WebGL2RenderingContext;
use wasm_bindgen::prelude::*;
impl WebGL2RenderingContext {
/// Creates and initializes WebGLRSRenderbuffer object.
pub fn create_renderbuffer(&self) -> WebGLRSRenderbuffer {
WebGLRSRenderbuffer {
context: self,
inner: self._create_renderbuffer(),
}
}
}
/// The `WebGLRenderbuffer` interface is represents a buffer that can contain an image, or can be source
/// or target of an rendering operation.
#[derive(Clone)]
pub struct WebGLRSRenderbuffer<'ctx> {
context: &'ctx WebGL2RenderingContext,
inner: WebGLRenderbuffer,
}
impl<'ctx> WebGLRSRenderbuffer<'ctx> {
/// Deletes the `WebGLRSRenderbuffer` object
pub fn delete(self) {
self.context._delete_renderbuffer(self.inner);
}
/// Returns true if the `WebGLRSRenderbuffer` object is valid and false otherwise.
pub fn is_valid(&self) -> bool {
self.context._is_renderbuffer(&self.inner)
}
/// Binds the `WebGLRSRenderbuffer` object to the given target.
///
/// # Arguments
/// * `target` - specifying the binding point.
pub fn bind(&self, target: RenderbufferKind) {
self.context._bind_renderbuffer(target, &self.inner);
}
/// Attaches this `WebGLRSRenderbuffer` object to a framebuffer.
///
/// # Arguments
/// * `fb_target` - specifying the binding point (target) for the framebuffer.
/// * `attachment` - specifying the attachment point for the render buffer.
/// * `rb_target` - specifying the binding point (target) for the render buffer.
pub fn attach_framebuffer(
&self,
fb_target: FramebufferKind,
attachment: Attachment,
rb_target: RenderbufferKind,
) {
self.context
._framebuffer_renderbuffer(fb_target, attachment, rb_target, &self.inner);
}
}
/// Bindings for WebGLRenderbuffer
#[wasm_bindgen]
#[derive(Clone, Copy)]
extern "C" {
#[derive(Clone)]
type WebGLRenderbuffer;
/// Binding for `WebGLRenderingContext.createRenderbuffer()`
#[wasm_bindgen(method, js_name = createRenderbuffer)]
fn _create_renderbuffer(this: &WebGL2RenderingContext) -> WebGLRenderbuffer;
/// The `WebGLRenderingContext.framebufferRenderbuffer()` method of the WebGL API attaches a WebGLRenderbuffer object
/// to a WebGLFramebuffer object.
#[wasm_bindgen(method, js_name = framebufferRenderbuffer)]
fn _framebuffer_renderbuffer(
this: &WebGL2RenderingContext,
target: FramebufferKind,
attachment: Attachment,
renderbuffertarget: RenderbufferKind,
renderbuffer: &WebGLRenderbuffer,
);
/// The `WebGLRenderingContext.bindRenderbuffer()` method of the WebGL API binds a given WebGLRenderbuffer
/// to a target, which must be `gl.RENDERBUFFER`.
#[wasm_bindgen(method, js_name = bindRenderbuffer)]
fn _bind_renderbuffer(
this: &WebGL2RenderingContext,
target: RenderbufferKind,
renderbuffer: &WebGLRenderbuffer,
);
/// The `WebGLRenderingContext.deleteRenderbuffer()` method of the WebGL API deletes a given WebGLRenderbuffer
/// object. This method has no effect if the render buffer has already been deleted.
#[wasm_bindgen(method, js_name = deleteRenderbuffer)]
fn _delete_renderbuffer(this: &WebGL2RenderingContext, renderbuffer: WebGLRenderbuffer);
/// The `WebGLRenderingContext.isRenderbuffer()` method of the WebGL API returns true if the passed
/// WebGLRenderbuffer is valid and false otherwise.
#[wasm_bindgen(method, js_name = isRenderbuffer)]
fn _is_renderbuffer(this: &WebGL2RenderingContext, renderbuffer: &WebGLRenderbuffer) -> bool;
}