1use glenum::{Attachment, FramebufferKind, RenderbufferKind};
3use rendering_context::WebGL2RenderingContext;
4use wasm_bindgen::prelude::*;
5
6impl WebGL2RenderingContext {
7 pub fn create_renderbuffer(&self) -> WebGLRSRenderbuffer {
9 WebGLRSRenderbuffer {
10 context: self,
11 inner: self._create_renderbuffer(),
12 }
13 }
14}
15
16#[derive(Clone)]
19pub struct WebGLRSRenderbuffer<'ctx> {
20 context: &'ctx WebGL2RenderingContext,
21 inner: WebGLRenderbuffer,
22}
23
24impl<'ctx> WebGLRSRenderbuffer<'ctx> {
25 pub fn delete(self) {
27 self.context._delete_renderbuffer(self.inner);
28 }
29
30 pub fn is_valid(&self) -> bool {
32 self.context._is_renderbuffer(&self.inner)
33 }
34
35 pub fn bind(&self, target: RenderbufferKind) {
40 self.context._bind_renderbuffer(target, &self.inner);
41 }
42
43 pub fn attach_framebuffer(
50 &self,
51 fb_target: FramebufferKind,
52 attachment: Attachment,
53 rb_target: RenderbufferKind,
54 ) {
55 self.context
56 ._framebuffer_renderbuffer(fb_target, attachment, rb_target, &self.inner);
57 }
58}
59
60#[wasm_bindgen]
62#[derive(Clone, Copy)]
63extern "C" {
64 #[derive(Clone)]
65 type WebGLRenderbuffer;
66 #[wasm_bindgen(method, js_name = createRenderbuffer)]
68 fn _create_renderbuffer(this: &WebGL2RenderingContext) -> WebGLRenderbuffer;
69
70 #[wasm_bindgen(method, js_name = framebufferRenderbuffer)]
73 fn _framebuffer_renderbuffer(
74 this: &WebGL2RenderingContext,
75 target: FramebufferKind,
76 attachment: Attachment,
77 renderbuffertarget: RenderbufferKind,
78 renderbuffer: &WebGLRenderbuffer,
79 );
80
81 #[wasm_bindgen(method, js_name = bindRenderbuffer)]
84 fn _bind_renderbuffer(
85 this: &WebGL2RenderingContext,
86 target: RenderbufferKind,
87 renderbuffer: &WebGLRenderbuffer,
88 );
89
90 #[wasm_bindgen(method, js_name = deleteRenderbuffer)]
93 fn _delete_renderbuffer(this: &WebGL2RenderingContext, renderbuffer: WebGLRenderbuffer);
94
95 #[wasm_bindgen(method, js_name = isRenderbuffer)]
98 fn _is_renderbuffer(this: &WebGL2RenderingContext, renderbuffer: &WebGLRenderbuffer) -> bool;
99
100}