Implement gl.getParameter(gl.MAX_VIEWPORT_DIMS)

This commit is contained in:
Anthony Ramine 2018-07-08 01:49:23 +02:00
parent 0e6bec65bb
commit 31774e9203
6 changed files with 24 additions and 21 deletions

View file

@ -885,6 +885,13 @@ impl WebGLImpl {
}
sender.send(value[0]).unwrap()
}
WebGLCommand::GetParameterInt2(param, ref sender) => {
let mut value = [0; 2];
unsafe {
ctx.gl().get_integer_v(param as u32, &mut value);
}
sender.send(value).unwrap()
}
WebGLCommand::GetParameterInt4(param, ref sender) => {
let mut value = [0; 4];
unsafe {

View file

@ -268,6 +268,7 @@ pub enum WebGLCommand {
GetParameterBool(ParameterBool, WebGLSender<bool>),
GetParameterBool4(ParameterBool4, WebGLSender<[bool; 4]>),
GetParameterInt(ParameterInt, WebGLSender<i32>),
GetParameterInt2(ParameterInt2, WebGLSender<[i32; 2]>),
GetParameterInt4(ParameterInt4, WebGLSender<[i32; 4]>),
GetParameterFloat(ParameterFloat, WebGLSender<f32>),
GetParameterFloat2(ParameterFloat2, WebGLSender<[f32; 2]>),
@ -522,6 +523,9 @@ parameters! {
SubpixelBits = gl::SUBPIXEL_BITS,
UnpackAlignment = gl::UNPACK_ALIGNMENT,
}),
Int2(ParameterInt2 {
MaxViewportDims = gl::MAX_VIEWPORT_DIMS,
}),
Int4(ParameterInt4 {
ScissorBox = gl::SCISSOR_BOX,
Viewport = gl::VIEWPORT,

View file

@ -1423,6 +1423,17 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
self.send_command(WebGLCommand::GetParameterInt(param, sender));
Int32Value(receiver.recv().unwrap())
}
Parameter::Int2(param) => {
let (sender, receiver) = webgl_channel().unwrap();
self.send_command(WebGLCommand::GetParameterInt2(param, sender));
rooted!(in(cx) let mut rval = ptr::null_mut::<JSObject>());
let _ = Int32Array::create(
cx,
CreateWith::Slice(&receiver.recv().unwrap()),
rval.handle_mut(),
).unwrap();
ObjectValue(rval.get())
}
Parameter::Int4(param) => {
let (sender, receiver) = webgl_channel().unwrap();
self.send_command(WebGLCommand::GetParameterInt4(param, sender));