mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-04-01 18:01:06 +00:00
Merge pull request #965 from djozis/master
Removed buffer copy from webgl example
This commit is contained in:
commit
2b90532db5
@ -5,6 +5,7 @@ extern crate web_sys;
|
|||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
use wasm_bindgen::JsCast;
|
use wasm_bindgen::JsCast;
|
||||||
use web_sys::{WebGlProgram, WebGlRenderingContext, WebGlShader};
|
use web_sys::{WebGlProgram, WebGlRenderingContext, WebGlShader};
|
||||||
|
use js_sys::{WebAssembly};
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
pub fn draw() {
|
pub fn draw() {
|
||||||
@ -44,17 +45,19 @@ pub fn draw() {
|
|||||||
let program = link_program(&context, [vert_shader, frag_shader].iter()).unwrap();
|
let program = link_program(&context, [vert_shader, frag_shader].iter()).unwrap();
|
||||||
context.use_program(Some(&program));
|
context.use_program(Some(&program));
|
||||||
|
|
||||||
let vertices = [-0.7, -0.7, 0.0, 0.7, -0.7, 0.0, 0.0, 0.7, 0.0];
|
let vertices: [f32; 9] = [-0.7, -0.7, 0.0, 0.7, -0.7, 0.0, 0.0, 0.7, 0.0];
|
||||||
let vert_array = js_sys::Float32Array::new(&wasm_bindgen::JsValue::from(vertices.len() as u32));
|
let memory_buffer = wasm_bindgen::memory().dyn_into::<WebAssembly::Memory>().unwrap().buffer();
|
||||||
for (i, f) in vertices.iter().enumerate() {
|
let vertices_location = vertices.as_ptr() as u32 / 4;
|
||||||
vert_array.fill(*f, i as u32, (i + 1) as u32);
|
let vert_array = js_sys::Float32Array::new(&memory_buffer).subarray(
|
||||||
}
|
vertices_location,
|
||||||
|
vertices_location + vertices.len() as u32,
|
||||||
|
);
|
||||||
|
|
||||||
let buffer = context.create_buffer().unwrap();
|
let buffer = context.create_buffer().unwrap();
|
||||||
context.bind_buffer(WebGlRenderingContext::ARRAY_BUFFER, Some(&buffer));
|
context.bind_buffer(WebGlRenderingContext::ARRAY_BUFFER, Some(&buffer));
|
||||||
context.buffer_data_with_opt_array_buffer(
|
context.buffer_data_with_array_buffer_view(
|
||||||
WebGlRenderingContext::ARRAY_BUFFER,
|
WebGlRenderingContext::ARRAY_BUFFER,
|
||||||
Some(&vert_array.buffer()),
|
vert_array.as_ref(),
|
||||||
WebGlRenderingContext::STATIC_DRAW,
|
WebGlRenderingContext::STATIC_DRAW,
|
||||||
);
|
);
|
||||||
context.vertex_attrib_pointer_with_i32(0, 3, WebGlRenderingContext::FLOAT, false, 0, 0);
|
context.vertex_attrib_pointer_with_i32(0, 3, WebGlRenderingContext::FLOAT, false, 0, 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user