use glenum::TransformFeedback;
use rendering_context::WebGL2RenderingContext;
use wasm_bindgen::prelude::*;
impl WebGL2RenderingContext {
pub fn create_transform_feedback(&self) -> WebGLRSTransformFeedback {
WebGLRSTransformFeedback {
context: self,
inner: self._create_transform_feedback(),
}
}
}
#[derive(Clone)]
pub struct WebGLRSTransformFeedback<'ctx> {
context: &'ctx WebGL2RenderingContext,
inner: WebGLTransformFeedback,
}
impl<'ctx> WebGLRSTransformFeedback<'ctx> {
pub fn delete(self) {
self.context._delete_transform_feedback(self.inner);
}
pub fn is_valid(&self) -> bool {
self.context._is_transform_feedback(&self.inner)
}
pub fn bind(&self, target: TransformFeedback) {
self.context._bind_transform_feedback(target, &self.inner);
}
}
#[wasm_bindgen]
#[derive(Clone, Copy)]
extern "C" {
#[derive(Clone)]
pub type WebGLTransformFeedback;
#[wasm_bindgen(method, js_name = createTransformFeedback)]
fn _create_transform_feedback(this: &WebGL2RenderingContext) -> WebGLTransformFeedback;
#[wasm_bindgen(method, js_name = deleteTransformFeedback)]
fn _delete_transform_feedback(
this: &WebGL2RenderingContext,
transform_feedback: WebGLTransformFeedback,
);
#[wasm_bindgen(method, js_name = isTransformFeedback)]
fn _is_transform_feedback(
this: &WebGL2RenderingContext,
transform_feedback: &WebGLTransformFeedback,
) -> bool;
#[wasm_bindgen(method, js_name = bindTransformFeedback)]
fn _bind_transform_feedback(
this: &WebGL2RenderingContext,
target: TransformFeedback,
transform_feedback: &WebGLTransformFeedback,
);
}