101 lines
2.3 KiB
Rust
101 lines
2.3 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
use gleam::gl::Gl;
|
|
|
|
use std::os::raw::c_void;
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_create_context() -> *mut c_void {
|
|
swgl::Context::create().into()
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_reference_context(ctx: *mut c_void) {
|
|
swgl::Context::from(ctx).reference();
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_destroy_context(ctx: *mut c_void) {
|
|
swgl::Context::from(ctx).destroy();
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_make_current(ctx: *mut c_void) {
|
|
swgl::Context::from(ctx).make_current();
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_init_default_framebuffer(
|
|
ctx: *mut c_void,
|
|
x: i32,
|
|
y: i32,
|
|
width: i32,
|
|
height: i32,
|
|
stride: i32,
|
|
buf: *mut c_void,
|
|
) {
|
|
swgl::Context::from(ctx).init_default_framebuffer(x, y, width, height, stride, buf);
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_resolve_framebuffer(ctx: *mut c_void, fbo: u32) {
|
|
swgl::Context::from(ctx).resolve_framebuffer(fbo);
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_gen_texture(ctx: *mut c_void) -> u32 {
|
|
swgl::Context::from(ctx).gen_textures(1)[0]
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_delete_texture(ctx: *mut c_void, tex: u32) {
|
|
swgl::Context::from(ctx).delete_textures(&[tex]);
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_set_texture_parameter(ctx: *mut c_void, tex: u32, pname: u32, param: i32) {
|
|
swgl::Context::from(ctx).set_texture_parameter(tex, pname, param);
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn wr_swgl_set_texture_buffer(
|
|
ctx: *mut c_void,
|
|
tex: u32,
|
|
internal_format: u32,
|
|
width: i32,
|
|
height: i32,
|
|
stride: i32,
|
|
buf: *mut c_void,
|
|
min_width: i32,
|
|
min_height: i32,
|
|
) {
|
|
swgl::Context::from(ctx).set_texture_buffer(
|
|
tex,
|
|
internal_format,
|
|
width,
|
|
height,
|
|
stride,
|
|
buf,
|
|
min_width,
|
|
min_height,
|
|
);
|
|
}
|
|
|
|
#[no_mangle]
|
|
#[allow(clippy::many_single_char_names)]
|
|
pub extern "C" fn wr_swgl_clear_color_rect(
|
|
ctx: *mut c_void,
|
|
fbo: u32,
|
|
x: i32,
|
|
y: i32,
|
|
width: i32,
|
|
height: i32,
|
|
r: f32,
|
|
g: f32,
|
|
b: f32,
|
|
a: f32,
|
|
) {
|
|
swgl::Context::from(ctx).clear_color_rect(fbo, x, y, width, height, r, g, b, a);
|
|
}
|