use glenum::FramebufferKind;
use rendering_context::WebGL2RenderingContext;
use wasm_bindgen::prelude::*;
impl WebGL2RenderingContext {
pub fn create_framebuffer(&self) -> WebGLRSFramebuffer {
WebGLRSFramebuffer {
context: self,
inner: self._create_framebuffer(),
}
}
}
#[derive(Clone)]
pub struct WebGLRSFramebuffer<'ctx> {
context: &'ctx WebGL2RenderingContext,
inner: WebGLFramebuffer,
}
impl<'ctx> WebGLRSFramebuffer<'ctx> {
pub fn bind(&self, target: FramebufferKind) {
self.context._bind_framebuffer(target, &self.inner);
}
pub fn is_valid(&self) -> bool {
self.context._is_framebuffer(&self.inner)
}
pub fn delete(self) {
self.context._delete_framebuffer(self.inner);
}
}
#[wasm_bindgen]
#[derive(Clone, Copy)]
extern "C" {
#[derive(Clone)]
type WebGLFramebuffer;
#[wasm_bindgen(method, js_name = createFramebuffer)]
fn _create_framebuffer(this: &WebGL2RenderingContext) -> WebGLFramebuffer;
#[wasm_bindgen(method, js_name = bindFramebuffer)]
fn _bind_framebuffer(
this: &WebGL2RenderingContext,
target: FramebufferKind,
framebuffer: &WebGLFramebuffer,
);
#[wasm_bindgen(method, js_name = deleteFramebuffer)]
fn _delete_framebuffer(this: &WebGL2RenderingContext, framebuffer: WebGLFramebuffer);
#[wasm_bindgen(method, js_name = isFramebuffer)]
fn _is_framebuffer(this: &WebGL2RenderingContext, framebuffer: &WebGLFramebuffer) -> bool;
}