webgl_rs/
transform_feedback.rs

1//! WebGLTransformFeedback and methods
2use glenum::TransformFeedback;
3use rendering_context::WebGL2RenderingContext;
4use wasm_bindgen::prelude::*;
5
6impl WebGL2RenderingContext {
7    /// Creates and initializes a `WebGLRSTransformFeedback` object.
8    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    /// Deletes this `WebGLRSTransformFeedback` object.
24    pub fn delete(self) {
25        self.context._delete_transform_feedback(self.inner);
26    }
27
28    /// Returns true if this is a valid `WebGLRSTransformFeedback` object.
29    pub fn is_valid(&self) -> bool {
30        self.context._is_transform_feedback(&self.inner)
31    }
32
33    /// Binds this `WebGLRSTransformFeedback` object to the current GL state.
34    ///
35    /// # Arguments
36    /// * `target` -  specifying the target (binding point).
37    pub fn bind(&self, target: TransformFeedback) {
38        self.context._bind_transform_feedback(target, &self.inner);
39    }
40}
41
42/// Bindings for WebGLTransformFeedback
43#[wasm_bindgen]
44#[derive(Clone, Copy)]
45extern "C" {
46    #[derive(Clone)]
47    pub type WebGLTransformFeedback;
48
49    /// Binding for `WebGL2RenderingContext.createTransformFeedback()`
50    #[wasm_bindgen(method, js_name = createTransformFeedback)]
51    fn _create_transform_feedback(this: &WebGL2RenderingContext) -> WebGLTransformFeedback;
52
53    /// Binding for `WebGL2RenderingContext.deleteTransformFeedback()`
54    #[wasm_bindgen(method, js_name = deleteTransformFeedback)]
55    fn _delete_transform_feedback(
56        this: &WebGL2RenderingContext,
57        transform_feedback: WebGLTransformFeedback,
58    );
59
60    /// Binding for `WebGL2RenderingContext.isTransformFeedback()`
61    #[wasm_bindgen(method, js_name = isTransformFeedback)]
62    fn _is_transform_feedback(
63        this: &WebGL2RenderingContext,
64        transform_feedback: &WebGLTransformFeedback,
65    ) -> bool;
66
67    /// Binding for `WebGL2RenderingContext.bindTransformFeedback()`
68    #[wasm_bindgen(method, js_name = bindTransformFeedback)]
69    fn _bind_transform_feedback(
70        this: &WebGL2RenderingContext,
71        target: TransformFeedback,
72        transform_feedback: &WebGLTransformFeedback,
73    );
74
75}