Skip to content

Commit

Permalink
Updating a couple examples
Browse files Browse the repository at this point in the history
  • Loading branch information
Pauan committed Jun 24, 2019
1 parent ed40572 commit 5e88b1e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
5 changes: 3 additions & 2 deletions examples/wasm-in-wasm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,19 @@ const WASM: &[u8] = include_bytes!("add.wasm");
pub fn run() -> Result<(), JsValue> {
console_log!("instantiating a new wasm module directly");

// Note that `Uint8Array::view` this is somewhat dangerous (hence the
// Note that `Uint8Array::view` is somewhat dangerous (hence the
// `unsafe`!). This is creating a raw view into our module's
// `WebAssembly.Memory` buffer, but if we allocate more pages for ourself
// (aka do a memory allocation in Rust) it'll cause the buffer to change,
// causing the `Uint8Array` to be invalid.
//
// As a result, after `Uint8Array::view` we have to be very careful not to
// do any memory allocations before it's next used.
// do any memory allocations before it's dropped.
let a = unsafe {
let array = Uint8Array::view(WASM);
WebAssembly::Module::new(array.as_ref())?
};

let b = WebAssembly::Instance::new(&a, &Object::new())?;
let c = b.exports();

Expand Down
25 changes: 19 additions & 6 deletions examples/webgl/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,25 @@ pub fn start() -> Result<(), JsValue> {

let buffer = context.create_buffer().ok_or("failed to create buffer")?;
context.bind_buffer(WebGlRenderingContext::ARRAY_BUFFER, Some(&buffer));
let vert_array = unsafe { js_sys::Float32Array::view(&vertices) };
context.buffer_data_with_array_buffer_view(
WebGlRenderingContext::ARRAY_BUFFER,
&vert_array,
WebGlRenderingContext::STATIC_DRAW,
);

// Note that `Float32Array::view` is somewhat dangerous (hence the
// `unsafe`!). This is creating a raw view into our module's
// `WebAssembly.Memory` buffer, but if we allocate more pages for ourself
// (aka do a memory allocation in Rust) it'll cause the buffer to change,
// causing the `Float32Array` to be invalid.
//
// As a result, after `Float32Array::view` we have to be very careful not to
// do any memory allocations before it's dropped.
unsafe {
let vert_array = js_sys::Float32Array::view(&vertices);

context.buffer_data_with_array_buffer_view(
WebGlRenderingContext::ARRAY_BUFFER,
&vert_array,
WebGlRenderingContext::STATIC_DRAW,
);
}

context.vertex_attrib_pointer_with_i32(0, 3, WebGlRenderingContext::FLOAT, false, 0, 0);
context.enable_vertex_attrib_array(0);

Expand Down

0 comments on commit 5e88b1e

Please sign in to comment.