mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Implement GetActiveAttrib
This commit is contained in:
parent
150338503d
commit
34644401c6
3 changed files with 23 additions and 1 deletions
|
@ -167,6 +167,17 @@ impl WebGLProgram {
|
||||||
WebGLActiveInfo::new(self.global().r(), size, ty, DOMString::from(name)))
|
WebGLActiveInfo::new(self.global().r(), size, ty, DOMString::from(name)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// glGetActiveAttrib
|
||||||
|
pub fn get_active_attrib(&self, index: u32) -> WebGLResult<Root<WebGLActiveInfo>> {
|
||||||
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
|
self.renderer
|
||||||
|
.send(CanvasMsg::WebGL(WebGLCommand::GetActiveAttrib(self.id, index, sender)))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
receiver.recv().unwrap().map(|(size, ty, name)|
|
||||||
|
WebGLActiveInfo::new(self.global().r(), size, ty, DOMString::from(name)))
|
||||||
|
}
|
||||||
|
|
||||||
/// glGetAttribLocation
|
/// glGetAttribLocation
|
||||||
pub fn get_attrib_location(&self, name: DOMString) -> WebGLResult<Option<i32>> {
|
pub fn get_attrib_location(&self, name: DOMString) -> WebGLResult<Option<i32>> {
|
||||||
if name.len() > MAX_UNIFORM_AND_ATTRIBUTE_LEN {
|
if name.len() > MAX_UNIFORM_AND_ATTRIBUTE_LEN {
|
||||||
|
|
|
@ -827,6 +827,17 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
|
||||||
|
fn GetActiveAttrib(&self, program: Option<&WebGLProgram>, index: u32) -> Option<Root<WebGLActiveInfo>> {
|
||||||
|
program.and_then(|p| match p.get_active_attrib(index) {
|
||||||
|
Ok(ret) => Some(ret),
|
||||||
|
Err(error) => {
|
||||||
|
self.webgl_error(error);
|
||||||
|
None
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
|
||||||
fn GetAttribLocation(&self, program: Option<&WebGLProgram>, name: DOMString) -> i32 {
|
fn GetAttribLocation(&self, program: Option<&WebGLProgram>, name: DOMString) -> i32 {
|
||||||
if let Some(program) = program {
|
if let Some(program) = program {
|
||||||
|
|
|
@ -567,7 +567,7 @@ interface WebGLRenderingContextBase
|
||||||
|
|
||||||
void generateMipmap(GLenum target);
|
void generateMipmap(GLenum target);
|
||||||
|
|
||||||
//WebGLActiveInfo? getActiveAttrib(WebGLProgram? program, GLuint index);
|
WebGLActiveInfo? getActiveAttrib(WebGLProgram? program, GLuint index);
|
||||||
WebGLActiveInfo? getActiveUniform(WebGLProgram? program, GLuint index);
|
WebGLActiveInfo? getActiveUniform(WebGLProgram? program, GLuint index);
|
||||||
//sequence<WebGLShader>? getAttachedShaders(WebGLProgram? program);
|
//sequence<WebGLShader>? getAttachedShaders(WebGLProgram? program);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue