webgl_rs/
transform_feedback.rs1use glenum::TransformFeedback;
3use rendering_context::WebGL2RenderingContext;
4use wasm_bindgen::prelude::*;
5
6impl WebGL2RenderingContext {
7 pub fn create_transform_feedback(&self) -> WebGLRSTransformFeedback {
9 WebGLRSTransformFeedback {
10 context: self,
11 inner: self._create_transform_feedback(),
12 }
13 }
14}
15
16#[derive(Clone)]
17pub struct WebGLRSTransformFeedback<'ctx> {
18 context: &'ctx WebGL2RenderingContext,
19 inner: WebGLTransformFeedback,
20}
21
22impl<'ctx> WebGLRSTransformFeedback<'ctx> {
23 pub fn delete(self) {
25 self.context._delete_transform_feedback(self.inner);
26 }
27
28 pub fn is_valid(&self) -> bool {
30 self.context._is_transform_feedback(&self.inner)
31 }
32
33 pub fn bind(&self, target: TransformFeedback) {
38 self.context._bind_transform_feedback(target, &self.inner);
39 }
40}
41
42#[wasm_bindgen]
44#[derive(Clone, Copy)]
45extern "C" {
46 #[derive(Clone)]
47 pub type WebGLTransformFeedback;
48
49 #[wasm_bindgen(method, js_name = createTransformFeedback)]
51 fn _create_transform_feedback(this: &WebGL2RenderingContext) -> WebGLTransformFeedback;
52
53 #[wasm_bindgen(method, js_name = deleteTransformFeedback)]
55 fn _delete_transform_feedback(
56 this: &WebGL2RenderingContext,
57 transform_feedback: WebGLTransformFeedback,
58 );
59
60 #[wasm_bindgen(method, js_name = isTransformFeedback)]
62 fn _is_transform_feedback(
63 this: &WebGL2RenderingContext,
64 transform_feedback: &WebGLTransformFeedback,
65 ) -> bool;
66
67 #[wasm_bindgen(method, js_name = bindTransformFeedback)]
69 fn _bind_transform_feedback(
70 this: &WebGL2RenderingContext,
71 target: TransformFeedback,
72 transform_feedback: &WebGLTransformFeedback,
73 );
74
75}