mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Add initial support for WebGL2 read framebuffer
Adds support for binding to the read framebuffer slot and querying its status.
This commit is contained in:
parent
833485887e
commit
796ee70597
5 changed files with 203 additions and 90 deletions
|
@ -96,20 +96,24 @@ impl WebGLRenderbuffer {
|
|||
if !self.is_deleted.get() {
|
||||
self.is_deleted.set(true);
|
||||
|
||||
let context = self.upcast::<WebGLObject>().context();
|
||||
|
||||
/*
|
||||
If a renderbuffer object is deleted while its image is attached to the currently
|
||||
bound framebuffer, then it is as if FramebufferRenderbuffer had been called, with
|
||||
a renderbuffer of 0, for each attachment point to which this image was attached
|
||||
in the currently bound framebuffer.
|
||||
- GLES 2.0, 4.4.3, "Attaching Renderbuffer Images to a Framebuffer"
|
||||
*/
|
||||
let currently_bound_framebuffer =
|
||||
self.upcast::<WebGLObject>().context().bound_framebuffer();
|
||||
if let Some(fb) = currently_bound_framebuffer {
|
||||
If a renderbuffer object is deleted while its image is attached to one or more
|
||||
attachment points in a currently bound framebuffer object, then it is as if
|
||||
FramebufferRenderbuffer had been called, with a renderbuffer of zero, for each
|
||||
attachment point to which this image was attached in that framebuffer object.
|
||||
In other words,the renderbuffer image is first detached from all attachment points
|
||||
in that frame-buffer object.
|
||||
- GLES 3.0, 4.4.2.3, "Attaching Renderbuffer Images to a Framebuffer"
|
||||
*/
|
||||
if let Some(fb) = context.get_draw_framebuffer_slot().get() {
|
||||
let _ = fb.detach_renderbuffer(self);
|
||||
}
|
||||
if let Some(fb) = context.get_read_framebuffer_slot().get() {
|
||||
let _ = fb.detach_renderbuffer(self);
|
||||
}
|
||||
|
||||
let context = self.upcast::<WebGLObject>().context();
|
||||
let cmd = WebGLCommand::DeleteRenderbuffer(self.id);
|
||||
if fallible {
|
||||
context.send_command_ignored(cmd);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue