mirror of
https://github.com/servo/servo.git
synced 2025-07-28 17:50:37 +01:00
Implement WebGLRenderingContextBase.getAttachedShaders
This commit is contained in:
parent
2befe47384
commit
a62bed82e4
11 changed files with 149 additions and 124 deletions
|
@ -974,6 +974,14 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
|
|||
level: i32) {
|
||||
self.base.FramebufferTexture2D(target, attachment, textarget, texture, level)
|
||||
}
|
||||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
|
||||
fn GetAttachedShaders(
|
||||
&self,
|
||||
program: &WebGLProgram,
|
||||
) -> Option<Vec<DomRoot<WebGLShader>>> {
|
||||
self.base.GetAttachedShaders(program)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -367,6 +367,19 @@ impl WebGLProgram {
|
|||
self.renderer.send(WebGLCommand::GetProgramParameter(self.id, param_id, sender)).unwrap();
|
||||
receiver.recv().unwrap()
|
||||
}
|
||||
|
||||
pub fn attached_shaders(&self) -> WebGLResult<Vec<DomRoot<WebGLShader>>> {
|
||||
if self.is_deleted.get() {
|
||||
return Err(WebGLError::InvalidValue);
|
||||
}
|
||||
Ok(match (self.vertex_shader.get(), self.fragment_shader.get()) {
|
||||
(Some(vertex_shader), Some(fragment_shader)) => {
|
||||
vec![vertex_shader, fragment_shader]
|
||||
}
|
||||
(Some(shader), None) | (None, Some(shader)) => vec![shader],
|
||||
(None, None) => vec![]
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for WebGLProgram {
|
||||
|
|
|
@ -3598,6 +3598,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
None => self.webgl_error(InvalidOperation),
|
||||
};
|
||||
}
|
||||
|
||||
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
|
||||
fn GetAttachedShaders(
|
||||
&self,
|
||||
program: &WebGLProgram,
|
||||
) -> Option<Vec<DomRoot<WebGLShader>>> {
|
||||
handle_potential_webgl_error!(self, program.attached_shaders().map(Some), None)
|
||||
}
|
||||
}
|
||||
|
||||
pub trait LayoutCanvasWebGLRenderingContextHelpers {
|
||||
|
|
|
@ -563,7 +563,7 @@ interface WebGLRenderingContextBase
|
|||
|
||||
WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index);
|
||||
WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index);
|
||||
//sequence<WebGLShader>? getAttachedShaders(WebGLProgram? program);
|
||||
sequence<WebGLShader>? getAttachedShaders(WebGLProgram program);
|
||||
|
||||
[WebGLHandlesContextLoss] GLint getAttribLocation(WebGLProgram program, DOMString name);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue