Skip to content

Commit aa4238a

Browse files
grovesNLdhyces
andauthored
Named buffer storage (#338)
* Add function call for NamedBufferStorage * Fix webgl and formatting * Fix formatting --------- Co-authored-by: dhyces <[email protected]>
1 parent ac114b8 commit aa4238a

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

src/lib.rs

+8
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,14 @@ pub trait HasContext: __private::Sealed {
638638

639639
unsafe fn buffer_storage(&self, target: u32, size: i32, data: Option<&[u8]>, flags: u32);
640640

641+
unsafe fn named_buffer_storage(
642+
&self,
643+
target: Self::Buffer,
644+
size: i32,
645+
data: Option<&[u8]>,
646+
flags: u32,
647+
);
648+
641649
unsafe fn check_framebuffer_status(&self, target: u32) -> u32;
642650

643651
unsafe fn check_named_framebuffer_status(

src/native.rs

+11
Original file line numberDiff line numberDiff line change
@@ -1496,6 +1496,17 @@ impl HasContext for Context {
14961496
gl.BufferStorageEXT(target, size, data, flags);
14971497
}
14981498
}
1499+
unsafe fn named_buffer_storage(
1500+
&self,
1501+
buffer: Self::Buffer,
1502+
size: i32,
1503+
data: Option<&[u8]>,
1504+
flags: u32,
1505+
) {
1506+
let gl = &self.raw;
1507+
let data = data.map(|p| p.as_ptr()).unwrap_or(std::ptr::null()) as *const std::ffi::c_void;
1508+
gl.NamedBufferStorage(buffer.0.get(), size as isize, data, flags);
1509+
}
14991510

15001511
unsafe fn check_framebuffer_status(&self, target: u32) -> u32 {
15011512
let gl = &self.raw;

src/web_sys.rs

+10
Original file line numberDiff line numberDiff line change
@@ -2760,6 +2760,16 @@ impl HasContext for Context {
27602760
panic!("Buffer storage is not supported");
27612761
}
27622762

2763+
unsafe fn named_buffer_storage(
2764+
&self,
2765+
buffer: Self::Buffer,
2766+
size: i32,
2767+
data: Option<&[u8]>,
2768+
flags: u32,
2769+
) {
2770+
panic!("Named buffer storage is not supported");
2771+
}
2772+
27632773
unsafe fn check_framebuffer_status(&self, target: u32) -> u32 {
27642774
match self.raw {
27652775
RawRenderingContext::WebGl1(ref gl) => gl.check_framebuffer_status(target),

0 commit comments

Comments
 (0)