1 /* 2 * Copyright 2010 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 17 package com.google.gwt.webgl.client; 18 19 import com.google.gwt.canvas.dom.client.ImageData; 20 import com.google.gwt.core.client.JavaScriptObject; 21 import com.google.gwt.core.client.JsArray; 22 import com.google.gwt.core.client.JsArrayString; 23 import com.google.gwt.dom.client.CanvasElement; 24 import com.google.gwt.dom.client.ImageElement; 25 import com.google.gwt.dom.client.VideoElement; 26 import com.google.gwt.typedarrays.shared.ArrayBuffer; 27 import com.google.gwt.typedarrays.shared.ArrayBufferView; 28 import com.google.gwt.typedarrays.shared.Float32Array; 29 import com.google.gwt.typedarrays.shared.Int32Array; 30 import com.google.gwt.typedarrays.shared.TypedArrays; 31 32 /** TODO: Lots more documentation needed here. 33 * 34 * Taken from the WebGL Draft Spec as of Aug 30, 2010: 35 * https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html TODO: Update this to the Feb 11 version. */ 36 public class WebGLRenderingContext extends JavaScriptObject { 37 38 /* ClearBufferMask */ 39 public static final int DEPTH_BUFFER_BIT = 0x00000100; 40 public static final int STENCIL_BUFFER_BIT = 0x00000400; 41 public static final int COLOR_BUFFER_BIT = 0x00004000; 42 43 /* BeginMode */ 44 public static final int POINTS = 0x0000; 45 public static final int LINES = 0x0001; 46 public static final int LINE_LOOP = 0x0002; 47 public static final int LINE_STRIP = 0x0003; 48 public static final int TRIANGLES = 0x0004; 49 public static final int TRIANGLE_STRIP = 0x0005; 50 public static final int TRIANGLE_FAN = 0x0006; 51 52 /* AlphaFunction (not supported in ES20) */ 53 /* NEVER */ 54 /* LESS */ 55 /* EQUAL */ 56 /* LEQUAL */ 57 /* GREATER */ 58 /* NOTEQUAL */ 59 /* GEQUAL */ 60 /* ALWAYS */ 61 62 /* BlendingFactorDest */ 63 public static final int ZERO = 0; 64 public static final int ONE = 1; 65 public static final int SRC_COLOR = 0x0300; 66 public static final int ONE_MINUS_SRC_COLOR = 0x0301; 67 public static final int SRC_ALPHA = 0x0302; 68 public static final int ONE_MINUS_SRC_ALPHA = 0x0303; 69 public static final int DST_ALPHA = 0x0304; 70 public static final int ONE_MINUS_DST_ALPHA = 0x0305; 71 72 /* BlendingFactorSrc */ 73 /* ZERO */ 74 /* ONE */ 75 public static final int DST_COLOR = 0x0306; 76 public static final int ONE_MINUS_DST_COLOR = 0x0307; 77 public static final int SRC_ALPHA_SATURATE = 0x0308; 78 /* SRC_ALPHA */ 79 /* ONE_MINUS_SRC_ALPHA */ 80 /* DST_ALPHA */ 81 /* ONE_MINUS_DST_ALPHA */ 82 83 /* BlendEquationSeparate */ 84 public static final int FUNC_ADD = 0x8006; 85 public static final int BLEND_EQUATION = 0x8009; 86 public static final int BLEND_EQUATION_RGB = 0x8009; /* same as BLEND_EQUATION */ 87 public static final int BLEND_EQUATION_ALPHA = 0x883D; 88 89 /* BlendSubtract */ 90 public static final int FUNC_SUBTRACT = 0x800A; 91 public static final int FUNC_REVERSE_SUBTRACT = 0x800B; 92 93 /* Separate Blend Functions */ 94 public static final int BLEND_DST_RGB = 0x80C8; 95 public static final int BLEND_SRC_RGB = 0x80C9; 96 public static final int BLEND_DST_ALPHA = 0x80CA; 97 public static final int BLEND_SRC_ALPHA = 0x80CB; 98 public static final int CONSTANT_COLOR = 0x8001; 99 public static final int ONE_MINUS_CONSTANT_COLOR = 0x8002; 100 public static final int CONSTANT_ALPHA = 0x8003; 101 public static final int ONE_MINUS_CONSTANT_ALPHA = 0x8004; 102 public static final int BLEND_COLOR = 0x8005; 103 104 /* Buffer Objects */ 105 public static final int ARRAY_BUFFER = 0x8892; 106 public static final int ELEMENT_ARRAY_BUFFER = 0x8893; 107 public static final int ARRAY_BUFFER_BINDING = 0x8894; 108 public static final int ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; 109 110 public static final int STREAM_DRAW = 0x88E0; 111 public static final int STATIC_DRAW = 0x88E4; 112 public static final int DYNAMIC_DRAW = 0x88E8; 113 114 public static final int BUFFER_SIZE = 0x8764; 115 public static final int BUFFER_USAGE = 0x8765; 116 117 public static final int CURRENT_VERTEX_ATTRIB = 0x8626; 118 119 /* CullFaceMode */ 120 public static final int FRONT = 0x0404; 121 public static final int BACK = 0x0405; 122 public static final int FRONT_AND_BACK = 0x0408; 123 124 /* DepthFunction */ 125 /* NEVER */ 126 /* LESS */ 127 /* EQUAL */ 128 /* LEQUAL */ 129 /* GREATER */ 130 /* NOTEQUAL */ 131 /* GEQUAL */ 132 /* ALWAYS */ 133 134 /* EnableCap */ 135 public static final int TEXTURE_2D = 0x0DE1; 136 public static final int CULL_FACE = 0x0B44; 137 public static final int BLEND = 0x0BE2; 138 public static final int DITHER = 0x0BD0; 139 public static final int STENCIL_TEST = 0x0B90; 140 public static final int DEPTH_TEST = 0x0B71; 141 public static final int SCISSOR_TEST = 0x0C11; 142 public static final int POLYGON_OFFSET_FILL = 0x8037; 143 public static final int SAMPLE_ALPHA_TO_COVERAGE = 0x809E; 144 public static final int SAMPLE_COVERAGE = 0x80A0; 145 146 /* ErrorCode */ 147 public static final int NO_ERROR = 0; 148 public static final int INVALID_ENUM = 0x0500; 149 public static final int INVALID_VALUE = 0x0501; 150 public static final int INVALID_OPERATION = 0x0502; 151 public static final int OUT_OF_MEMORY = 0x0505; 152 153 /* FrontFaceDirection */ 154 public static final int CW = 0x0900; 155 public static final int CCW = 0x0901; 156 157 /* GetPName */ 158 public static final int LINE_WIDTH = 0x0B21; 159 public static final int ALIASED_POINT_SIZE_RANGE = 0x846D; 160 public static final int ALIASED_LINE_WIDTH_RANGE = 0x846E; 161 public static final int CULL_FACE_MODE = 0x0B45; 162 public static final int FRONT_FACE = 0x0B46; 163 public static final int DEPTH_RANGE = 0x0B70; 164 public static final int DEPTH_WRITEMASK = 0x0B72; 165 public static final int DEPTH_CLEAR_VALUE = 0x0B73; 166 public static final int DEPTH_FUNC = 0x0B74; 167 public static final int STENCIL_CLEAR_VALUE = 0x0B91; 168 public static final int STENCIL_FUNC = 0x0B92; 169 public static final int STENCIL_FAIL = 0x0B94; 170 public static final int STENCIL_PASS_DEPTH_FAIL = 0x0B95; 171 public static final int STENCIL_PASS_DEPTH_PASS = 0x0B96; 172 public static final int STENCIL_REF = 0x0B97; 173 public static final int STENCIL_VALUE_MASK = 0x0B93; 174 public static final int STENCIL_WRITEMASK = 0x0B98; 175 public static final int STENCIL_BACK_FUNC = 0x8800; 176 public static final int STENCIL_BACK_FAIL = 0x8801; 177 public static final int STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; 178 public static final int STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; 179 public static final int STENCIL_BACK_REF = 0x8CA3; 180 public static final int STENCIL_BACK_VALUE_MASK = 0x8CA4; 181 public static final int STENCIL_BACK_WRITEMASK = 0x8CA5; 182 public static final int VIEWPORT = 0x0BA2; 183 public static final int SCISSOR_BOX = 0x0C10; 184 /* SCISSOR_TEST */ 185 public static final int COLOR_CLEAR_VALUE = 0x0C22; 186 public static final int COLOR_WRITEMASK = 0x0C23; 187 public static final int UNPACK_ALIGNMENT = 0x0CF5; 188 public static final int PACK_ALIGNMENT = 0x0D05; 189 public static final int MAX_TEXTURE_SIZE = 0x0D33; 190 public static final int MAX_VIEWPORT_DIMS = 0x0D3A; 191 public static final int SUBPIXEL_BITS = 0x0D50; 192 public static final int RED_BITS = 0x0D52; 193 public static final int GREEN_BITS = 0x0D53; 194 public static final int BLUE_BITS = 0x0D54; 195 public static final int ALPHA_BITS = 0x0D55; 196 public static final int DEPTH_BITS = 0x0D56; 197 public static final int STENCIL_BITS = 0x0D57; 198 public static final int POLYGON_OFFSET_UNITS = 0x2A00; 199 /* POLYGON_OFFSET_FILL */ 200 public static final int POLYGON_OFFSET_FACTOR = 0x8038; 201 public static final int TEXTURE_BINDING_2D = 0x8069; 202 public static final int SAMPLE_BUFFERS = 0x80A8; 203 public static final int SAMPLES = 0x80A9; 204 public static final int SAMPLE_COVERAGE_VALUE = 0x80AA; 205 public static final int SAMPLE_COVERAGE_INVERT = 0x80AB; 206 207 /* GetTextureParameter */ 208 /* TEXTURE_MAG_FILTER */ 209 /* TEXTURE_MIN_FILTER */ 210 /* TEXTURE_WRAP_S */ 211 /* TEXTURE_WRAP_T */ 212 213 public static final int NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; 214 public static final int COMPRESSED_TEXTURE_FORMATS = 0x86A3; 215 216 /* HintMode */ 217 public static final int DONT_CARE = 0x1100; 218 public static final int FASTEST = 0x1101; 219 public static final int NICEST = 0x1102; 220 221 /* HintTarget */ 222 public static final int GENERATE_MIPMAP_HINT = 0x8192; 223 224 /* DataType */ 225 public static final int BYTE = 0x1400; 226 public static final int UNSIGNED_BYTE = 0x1401; 227 public static final int SHORT = 0x1402; 228 public static final int UNSIGNED_SHORT = 0x1403; 229 public static final int INT = 0x1404; 230 public static final int UNSIGNED_INT = 0x1405; 231 public static final int FLOAT = 0x1406; 232 233 /* PixelFormat */ 234 public static final int DEPTH_COMPONENT = 0x1902; 235 public static final int ALPHA = 0x1906; 236 public static final int RGB = 0x1907; 237 public static final int RGBA = 0x1908; 238 public static final int LUMINANCE = 0x1909; 239 public static final int LUMINANCE_ALPHA = 0x190A; 240 241 /* PixelType */ 242 /* UNSIGNED_BYTE */ 243 public static final int UNSIGNED_SHORT_4_4_4_4 = 0x8033; 244 public static final int UNSIGNED_SHORT_5_5_5_1 = 0x8034; 245 public static final int UNSIGNED_SHORT_5_6_5 = 0x8363; 246 247 /* Shaders */ 248 public static final int FRAGMENT_SHADER = 0x8B30; 249 public static final int VERTEX_SHADER = 0x8B31; 250 public static final int MAX_VERTEX_ATTRIBS = 0x8869; 251 public static final int MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; 252 public static final int MAX_VARYING_VECTORS = 0x8DFC; 253 public static final int MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; 254 public static final int MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; 255 public static final int MAX_TEXTURE_IMAGE_UNITS = 0x8872; 256 public static final int MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; 257 public static final int SHADER_TYPE = 0x8B4F; 258 public static final int DELETE_STATUS = 0x8B80; 259 public static final int LINK_STATUS = 0x8B82; 260 public static final int VALIDATE_STATUS = 0x8B83; 261 public static final int ATTACHED_SHADERS = 0x8B85; 262 public static final int ACTIVE_UNIFORMS = 0x8B86; 263 public static final int ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; 264 public static final int ACTIVE_ATTRIBUTES = 0x8B89; 265 public static final int ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; 266 public static final int SHADING_LANGUAGE_VERSION = 0x8B8C; 267 public static final int CURRENT_PROGRAM = 0x8B8D; 268 269 /* StencilFunction */ 270 public static final int NEVER = 0x0200; 271 public static final int LESS = 0x0201; 272 public static final int EQUAL = 0x0202; 273 public static final int LEQUAL = 0x0203; 274 public static final int GREATER = 0x0204; 275 public static final int NOTEQUAL = 0x0205; 276 public static final int GEQUAL = 0x0206; 277 public static final int ALWAYS = 0x0207; 278 279 /* StencilOp */ 280 /* ZERO */ 281 public static final int KEEP = 0x1E00; 282 public static final int REPLACE = 0x1E01; 283 public static final int INCR = 0x1E02; 284 public static final int DECR = 0x1E03; 285 public static final int INVERT = 0x150A; 286 public static final int INCR_WRAP = 0x8507; 287 public static final int DECR_WRAP = 0x8508; 288 289 /* StringName */ 290 public static final int VENDOR = 0x1F00; 291 public static final int RENDERER = 0x1F01; 292 public static final int VERSION = 0x1F02; 293 294 /* TextureMagFilter */ 295 public static final int NEAREST = 0x2600; 296 public static final int LINEAR = 0x2601; 297 298 /* TextureMinFilter */ 299 /* NEAREST */ 300 /* LINEAR */ 301 public static final int NEAREST_MIPMAP_NEAREST = 0x2700; 302 public static final int LINEAR_MIPMAP_NEAREST = 0x2701; 303 public static final int NEAREST_MIPMAP_LINEAR = 0x2702; 304 public static final int LINEAR_MIPMAP_LINEAR = 0x2703; 305 306 /* TextureParameterName */ 307 public static final int TEXTURE_MAG_FILTER = 0x2800; 308 public static final int TEXTURE_MIN_FILTER = 0x2801; 309 public static final int TEXTURE_WRAP_S = 0x2802; 310 public static final int TEXTURE_WRAP_T = 0x2803; 311 312 /* TextureTarget */ 313 /* TEXTURE_2D */ 314 public static final int TEXTURE = 0x1702; 315 316 public static final int TEXTURE_CUBE_MAP = 0x8513; 317 public static final int TEXTURE_BINDING_CUBE_MAP = 0x8514; 318 public static final int TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; 319 public static final int TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; 320 public static final int TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; 321 public static final int TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; 322 public static final int TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; 323 public static final int TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; 324 public static final int MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; 325 326 /* TextureUnit */ 327 public static final int TEXTURE0 = 0x84C0; 328 public static final int TEXTURE1 = 0x84C1; 329 public static final int TEXTURE2 = 0x84C2; 330 public static final int TEXTURE3 = 0x84C3; 331 public static final int TEXTURE4 = 0x84C4; 332 public static final int TEXTURE5 = 0x84C5; 333 public static final int TEXTURE6 = 0x84C6; 334 public static final int TEXTURE7 = 0x84C7; 335 public static final int TEXTURE8 = 0x84C8; 336 public static final int TEXTURE9 = 0x84C9; 337 public static final int TEXTURE10 = 0x84CA; 338 public static final int TEXTURE11 = 0x84CB; 339 public static final int TEXTURE12 = 0x84CC; 340 public static final int TEXTURE13 = 0x84CD; 341 public static final int TEXTURE14 = 0x84CE; 342 public static final int TEXTURE15 = 0x84CF; 343 public static final int TEXTURE16 = 0x84D0; 344 public static final int TEXTURE17 = 0x84D1; 345 public static final int TEXTURE18 = 0x84D2; 346 public static final int TEXTURE19 = 0x84D3; 347 public static final int TEXTURE20 = 0x84D4; 348 public static final int TEXTURE21 = 0x84D5; 349 public static final int TEXTURE22 = 0x84D6; 350 public static final int TEXTURE23 = 0x84D7; 351 public static final int TEXTURE24 = 0x84D8; 352 public static final int TEXTURE25 = 0x84D9; 353 public static final int TEXTURE26 = 0x84DA; 354 public static final int TEXTURE27 = 0x84DB; 355 public static final int TEXTURE28 = 0x84DC; 356 public static final int TEXTURE29 = 0x84DD; 357 public static final int TEXTURE30 = 0x84DE; 358 public static final int TEXTURE31 = 0x84DF; 359 public static final int ACTIVE_TEXTURE = 0x84E0; 360 361 /* TextureWrapMode */ 362 public static final int REPEAT = 0x2901; 363 public static final int CLAMP_TO_EDGE = 0x812F; 364 public static final int MIRRORED_REPEAT = 0x8370; 365 366 /* Uniform Types */ 367 public static final int FLOAT_VEC2 = 0x8B50; 368 public static final int FLOAT_VEC3 = 0x8B51; 369 public static final int FLOAT_VEC4 = 0x8B52; 370 public static final int INT_VEC2 = 0x8B53; 371 public static final int INT_VEC3 = 0x8B54; 372 public static final int INT_VEC4 = 0x8B55; 373 public static final int BOOL = 0x8B56; 374 public static final int BOOL_VEC2 = 0x8B57; 375 public static final int BOOL_VEC3 = 0x8B58; 376 public static final int BOOL_VEC4 = 0x8B59; 377 public static final int FLOAT_MAT2 = 0x8B5A; 378 public static final int FLOAT_MAT3 = 0x8B5B; 379 public static final int FLOAT_MAT4 = 0x8B5C; 380 public static final int SAMPLER_2D = 0x8B5E; 381 public static final int SAMPLER_CUBE = 0x8B60; 382 383 /* Vertex Arrays */ 384 public static final int VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; 385 public static final int VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; 386 public static final int VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; 387 public static final int VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; 388 public static final int VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; 389 public static final int VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; 390 public static final int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; 391 392 /* Read Format */ 393 public static final int IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; 394 public static final int IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; 395 396 /* Shader Source */ 397 public static final int COMPILE_STATUS = 0x8B81; 398 public static final int INFO_LOG_LENGTH = 0x8B84; 399 public static final int SHADER_SOURCE_LENGTH = 0x8B88; 400 401 /* Shader Precision-Specified Types */ 402 public static final int LOW_FLOAT = 0x8DF0; 403 public static final int MEDIUM_FLOAT = 0x8DF1; 404 public static final int HIGH_FLOAT = 0x8DF2; 405 public static final int LOW_INT = 0x8DF3; 406 public static final int MEDIUM_INT = 0x8DF4; 407 public static final int HIGH_INT = 0x8DF5; 408 409 /* Framebuffer Object. */ 410 public static final int FRAMEBUFFER = 0x8D40; 411 public static final int RENDERBUFFER = 0x8D41; 412 413 public static final int RGBA4 = 0x8056; 414 public static final int RGB5_A1 = 0x8057; 415 public static final int RGB565 = 0x8D62; 416 public static final int DEPTH_COMPONENT16 = 0x81A5; 417 public static final int STENCIL_INDEX = 0x1901; 418 public static final int STENCIL_INDEX8 = 0x8D48; 419 public static final int DEPTH_STENCIL = 0x84F9; 420 421 public static final int RENDERBUFFER_WIDTH = 0x8D42; 422 public static final int RENDERBUFFER_HEIGHT = 0x8D43; 423 public static final int RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; 424 public static final int RENDERBUFFER_RED_SIZE = 0x8D50; 425 public static final int RENDERBUFFER_GREEN_SIZE = 0x8D51; 426 public static final int RENDERBUFFER_BLUE_SIZE = 0x8D52; 427 public static final int RENDERBUFFER_ALPHA_SIZE = 0x8D53; 428 public static final int RENDERBUFFER_DEPTH_SIZE = 0x8D54; 429 public static final int RENDERBUFFER_STENCIL_SIZE = 0x8D55; 430 431 public static final int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; 432 public static final int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; 433 public static final int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; 434 public static final int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; 435 436 public static final int COLOR_ATTACHMENT0 = 0x8CE0; 437 public static final int DEPTH_ATTACHMENT = 0x8D00; 438 public static final int STENCIL_ATTACHMENT = 0x8D20; 439 public static final int DEPTH_STENCIL_ATTACHMENT = 0x821A; 440 441 public static final int NONE = 0; 442 443 public static final int FRAMEBUFFER_COMPLETE = 0x8CD5; 444 public static final int FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; 445 public static final int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; 446 public static final int FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9; 447 public static final int FRAMEBUFFER_UNSUPPORTED = 0x8CDD; 448 449 public static final int FRAMEBUFFER_BINDING = 0x8CA6; 450 public static final int RENDERBUFFER_BINDING = 0x8CA7; 451 public static final int MAX_RENDERBUFFER_SIZE = 0x84E8; 452 453 public static final int INVALID_FRAMEBUFFER_OPERATION = 0x0506; 454 455 /* WebGL-specific enums */ 456 public static final int UNPACK_FLIP_Y_WEBGL = 0x9240; 457 public static final int UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241; 458 public static final int CONTEXT_LOST_WEBGL = 0x9242; 459 460 /** Returns a WebGL context for the given canvas element. Returns null if no 3d context is available. */ 461 public static WebGLRenderingContext getContext (CanvasElement canvas) { 462 return getContext(canvas, WebGLContextAttributes.create()); 463 } 464 465 /** Returns a WebGL context for the given canvas element. Returns null if no 3d context is available. */ 466 public static native WebGLRenderingContext getContext (CanvasElement canvas, WebGLContextAttributes attributes) /*-{ 467 var names = [ "experimental-webgl", "webgl", "moz-webgl", 468 "webkit-webgl", "webkit-3d" ]; 469 470 for ( var i = 0; i < names.length; i++) { 471 try { 472 var ctx = canvas.getContext(names[i], attributes); 473 474 if (ctx != null) { 475 // Hook for the semi-standard WebGLDebugUtils script. 476 if ($wnd.WebGLDebugUtils) { 477 if ($wnd.console && $wnd.console.log) 478 console.log('WebGL debugging enabled'); 479 return $wnd.WebGLDebugUtils.makeDebugContext(ctx); 480 } 481 return ctx; 482 } 483 } catch (e) { 484 } 485 } 486 487 return null; 488 }-*/; 489 490 protected WebGLRenderingContext () { 491 } 492 493 public final native CanvasElement getCanvas () /*-{ 494 return this.canvas; 495 }-*/; 496 497 public final native WebGLContextAttributes getContextAttributes () /*-{ 498 return this.getContextAttributes(); 499 }-*/; 500 501 public final native boolean isContextLost () /*-{ 502 return this.isContextLost(); 503 }-*/; 504 505 public final native JsArrayString getSupportedExtensions () /*-{ 506 return this.getSupportedExtensions(); 507 }-*/; 508 509 public final native JavaScriptObject getExtension (String name) /*-{ 510 return this.getExtension(name); 511 }-*/; 512 513 public final native void activeTexture (int texture) /*-{ 514 this.activeTexture(texture); 515 }-*/; 516 517 public final native void attachShader (WebGLProgram program, WebGLShader shader) /*-{ 518 this.attachShader(program, shader); 519 }-*/; 520 521 public final native void bindAttribLocation (WebGLProgram program, int index, String name) /*-{ 522 this.bindAttribLocation(program, index, name); 523 }-*/; 524 525 public final native void bindBuffer (int target, WebGLBuffer buffer) /*-{ 526 this.bindBuffer(target, buffer); 527 }-*/; 528 529 public final native void bindFramebuffer (int target, WebGLFramebuffer framebuffer) /*-{ 530 this.bindFramebuffer(target, framebuffer); 531 }-*/; 532 533 public final native void bindRenderbuffer (int target, WebGLRenderbuffer renderbuffer) /*-{ 534 this.bindRenderbuffer(target, renderbuffer); 535 }-*/; 536 537 public final native void bindTexture (int target, WebGLTexture texture) /*-{ 538 this.bindTexture(target, texture); 539 }-*/; 540 541 public final native void blendColor (float red, float green, float blue, float alpha) /*-{ 542 this.blendColor(red, green, blue, alpha); 543 }-*/; 544 545 public final native void blendEquation (int mode) /*-{ 546 this.blendEquation(mode); 547 }-*/; 548 549 public final native void blendEquationSeparate (int modeRGB, int modeAlpha) /*-{ 550 this.blendEquationSeparate(modeRGB, modeAlpha); 551 }-*/; 552 553 public final native void blendFunc (int sfactor, int dfactor) /*-{ 554 this.blendFunc(sfactor, dfactor); 555 }-*/; 556 557 public final native void blendFuncSeparate (int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) /*-{ 558 this.blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); 559 }-*/; 560 561 public final native void bufferData (int target, int size, int usage) /*-{ 562 this.bufferData(target, size, usage); 563 }-*/; 564 565 public final native void bufferData (int target, ArrayBufferView data, int usage) /*-{ 566 this.bufferData(target, data, usage); 567 }-*/; 568 569 public final native void bufferData (int target, ArrayBuffer data, int usage) /*-{ 570 this.bufferData(target, data, usage); 571 }-*/; 572 573 public final native void bufferSubData (int target, int offset, ArrayBufferView data) /*-{ 574 this.bufferSubData(target, offset, data); 575 }-*/; 576 577 public final native void bufferSubData (int target, int offset, ArrayBuffer data) /*-{ 578 this.bufferSubData(target, offset, data); 579 }-*/; 580 581 public final native int checkFramebufferStatus (int target) /*-{ 582 return this.checkFramebufferStatus(target); 583 }-*/; 584 585 public final native void clear (int mask) /*-{ 586 this.clear(mask); 587 }-*/; 588 589 public final native void clearColor (float red, float green, float blue, float alpha) /*-{ 590 this.clearColor(red, green, blue, alpha); 591 }-*/; 592 593 public final native void clearDepth (float depth) /*-{ 594 this.clearDepth(depth); 595 }-*/; 596 597 public final native void clearStencil (int s) /*-{ 598 this.clearStencil(s); 599 }-*/; 600 601 public final native void colorMask (boolean red, boolean green, boolean blue, boolean alpha) /*-{ 602 this.colorMask(red, green, blue, alpha); 603 }-*/; 604 605 public final native void compileShader (WebGLShader shader) /*-{ 606 this.compileShader(shader); 607 }-*/; 608 609 public final native void copyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, 610 int border) /*-{ 611 this.copyTexImage2D(target, level, internalformat, x, y, width, height, 612 border); 613 }-*/; 614 615 public final native void copyTexSubImage2D (int target, int level, int xoffset, int yoffset, int x, int y, int width, 616 int height) /*-{ 617 this.copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, 618 height); 619 }-*/; 620 621 public final native WebGLBuffer createBuffer () /*-{ 622 return this.createBuffer(); 623 }-*/; 624 625 public final native WebGLFramebuffer createFramebuffer () /*-{ 626 return this.createFramebuffer(); 627 }-*/; 628 629 public final native WebGLProgram createProgram () /*-{ 630 return this.createProgram(); 631 }-*/; 632 633 public final native WebGLRenderbuffer createRenderbuffer () /*-{ 634 return this.createRenderbuffer(); 635 }-*/; 636 637 public final native WebGLShader createShader (int type) /*-{ 638 return this.createShader(type); 639 }-*/; 640 641 public final native WebGLTexture createTexture () /*-{ 642 return this.createTexture(); 643 }-*/; 644 645 public final native void cullFace (int mode) /*-{ 646 this.cullFace(mode); 647 }-*/; 648 649 public final native void deleteBuffer (WebGLBuffer buffer) /*-{ 650 this.deleteBuffer(buffer); 651 }-*/; 652 653 public final native void deleteFramebuffer (WebGLFramebuffer framebuffer) /*-{ 654 this.deleteFramebuffer(framebuffer); 655 }-*/; 656 657 public final native void deleteProgram (WebGLProgram program) /*-{ 658 this.deleteProgram(program); 659 }-*/; 660 661 public final native void deleteRenderbuffer (WebGLRenderbuffer renderbuffer) /*-{ 662 this.deleteRenderbuffer(renderbuffer); 663 }-*/; 664 665 public final native void deleteShader (WebGLShader shader) /*-{ 666 this.deleteShader(shader); 667 }-*/; 668 669 public final native void deleteTexture (WebGLTexture texture) /*-{ 670 this.deleteTexture(texture); 671 }-*/; 672 673 public final native void depthFunc (int func) /*-{ 674 this.depthFunc(func); 675 }-*/; 676 677 public final native void depthMask (boolean flag) /*-{ 678 this.depthMask(flag); 679 }-*/; 680 681 public final native void depthRange (float zNear, float zFar) /*-{ 682 this.depthRange(zNear, zFar); 683 }-*/; 684 685 public final native void detachShader (WebGLProgram program, WebGLShader shader) /*-{ 686 this.detachShader(program, shader); 687 }-*/; 688 689 public final native void disable (int cap) /*-{ 690 this.disable(cap); 691 }-*/; 692 693 public final native void disableVertexAttribArray (int index) /*-{ 694 this.disableVertexAttribArray(index); 695 }-*/; 696 697 public final native void drawArrays (int mode, int first, int count) /*-{ 698 this.drawArrays(mode, first, count); 699 }-*/; 700 701 public final native void drawElements (int mode, int count, int type, int offset) /*-{ 702 this.drawElements(mode, count, type, offset); 703 }-*/; 704 705 public final native void enable (int cap) /*-{ 706 this.enable(cap); 707 }-*/; 708 709 public final native void enableVertexAttribArray (int index) /*-{ 710 this.enableVertexAttribArray(index); 711 }-*/; 712 713 public final native void finish () /*-{ 714 this.finish(); 715 }-*/; 716 717 public final native void flush () /*-{ 718 this.flush(); 719 }-*/; 720 721 public final native void framebufferRenderbuffer (int target, int attachment, int renderbuffertarget, 722 WebGLRenderbuffer renderbuffer) /*-{ 723 this.framebufferRenderbuffer(target, attachment, renderbuffertarget, 724 renderbuffer); 725 }-*/; 726 727 public final native void framebufferTexture2D (int target, int attachment, int textarget, WebGLTexture texture, int level) /*-{ 728 this 729 .framebufferTexture2D(target, attachment, textarget, texture, 730 level); 731 }-*/; 732 733 public final native void frontFace (int mode) /*-{ 734 this.frontFace(mode); 735 }-*/; 736 737 public final native void generateMipmap (int target) /*-{ 738 this.generateMipmap(target); 739 }-*/; 740 741 public final native WebGLActiveInfo getActiveAttrib (WebGLProgram program, int index) /*-{ 742 return this.getActiveAttrib(program, index); 743 }-*/; 744 745 public final native WebGLActiveInfo getActiveUniform (WebGLProgram program, int index) /*-{ 746 return this.getActiveUniform(program, index); 747 }-*/; 748 749 public final native JsArray<WebGLShader> getAttachedShaders (WebGLProgram program) /*-{ 750 return this.getAttachedShaders(program); 751 }-*/; 752 753 public final native int getAttribLocation (WebGLProgram program, String name) /*-{ 754 return this.getAttribLocation(program, name); 755 }-*/; 756 757 public final native int getError () /*-{ 758 return this.getError(); 759 }-*/; 760 761 public final native String getProgramInfoLog (WebGLProgram program) /*-{ 762 return this.getProgramInfoLog(program); 763 }-*/; 764 765 public final native String getShaderInfoLog (WebGLShader shader) /*-{ 766 return this.getShaderInfoLog(shader); 767 }-*/; 768 769 public final native String getShaderSource (WebGLShader shader) /*-{ 770 return this.getShaderSource(shader); 771 }-*/; 772 773 public final native WebGLUniformLocation getUniformLocation (WebGLProgram program, String name) /*-{ 774 return this.getUniformLocation(program, name); 775 }-*/; 776 777 public final native int getVertexAttribOffset (int index, int pname) /*-{ 778 return this.getVertexAttribOffset(index, pname); 779 }-*/; 780 781 public final native void hint (int target, int mode) /*-{ 782 this.hint(target, mode); 783 }-*/; 784 785 public final native boolean isBuffer (WebGLBuffer buffer) /*-{ 786 return this.isBuffer(buffer); 787 }-*/; 788 789 public final native boolean isEnabled (int cap) /*-{ 790 return this.isEnabled(cap); 791 }-*/; 792 793 public final native boolean isFramebuffer (WebGLFramebuffer framebuffer) /*-{ 794 return this.isFramebuffer(framebuffer); 795 }-*/; 796 797 public final native boolean isProgram (WebGLProgram program) /*-{ 798 return this.isProgram(program); 799 }-*/; 800 801 public final native boolean isRenderbuffer (WebGLRenderbuffer renderbuffer) /*-{ 802 return this.isRenderbuffer(renderbuffer); 803 }-*/; 804 805 public final native boolean isShader (WebGLShader shader) /*-{ 806 return this.isShader(shader); 807 }-*/; 808 809 public final native boolean isTexture (WebGLTexture texture) /*-{ 810 return this.isTexture(texture); 811 }-*/; 812 813 public final native void lineWidth (float width) /*-{ 814 this.lineWidth(width); 815 }-*/; 816 817 public final native void linkProgram (WebGLProgram program) /*-{ 818 this.linkProgram(program); 819 }-*/; 820 821 public final native void pixelStorei (int pname, int param) /*-{ 822 this.pixelStorei(pname, param); 823 }-*/; 824 825 public final native void polygonOffset (float factor, float units) /*-{ 826 this.polygonOffset(factor, units); 827 }-*/; 828 829 public final native void readPixels (int x, int y, int width, int height, int format, int type, ArrayBufferView pixels) /*-{ 830 this.readPixels(x, y, width, height, format, type, pixels); 831 }-*/; 832 833 public final native void renderbufferStorage (int target, int internalformat, int width, int height) /*-{ 834 this.renderbufferStorage(target, internalformat, width, height); 835 }-*/; 836 837 public final native void sampleCoverage (float value, boolean invert) /*-{ 838 this.sampleCoverage(value, invert); 839 }-*/; 840 841 public final native void scissor (int x, int y, int width, int height) /*-{ 842 this.scissor(x, y, width, height); 843 }-*/; 844 845 public final native void shaderSource (WebGLShader shader, String source) /*-{ 846 this.shaderSource(shader, source); 847 }-*/; 848 849 public final native void stencilFunc (int func, int ref, int mask) /*-{ 850 this.stencilFunc(func, ref, mask); 851 }-*/; 852 853 public final native void stencilFuncSeparate (int face, int func, int ref, int mask) /*-{ 854 this.stencilFuncSeparate(face, func, ref, mask); 855 }-*/; 856 857 public final native void stencilMask (int mask) /*-{ 858 this.stencilMask(mask); 859 }-*/; 860 861 public final native void stencilMaskSeparate (int face, int mask) /*-{ 862 this.stencilMaskSeparate(face, mask); 863 }-*/; 864 865 public final native void stencilOp (int fail, int zfail, int zpass) /*-{ 866 this.stencilOp(fail, zfail, zpass); 867 }-*/; 868 869 public final native void stencilOpSeparate (int face, int fail, int zfail, int zpass) /*-{ 870 this.stencilOpSeparate(face, fail, zfail, zpass); 871 }-*/; 872 873 public final native void texImage2D (int target, int level, int internalformat, int width, int height, int border, int format, 874 int type, ArrayBufferView pixels) /*-{ 875 this.texImage2D(target, level, internalformat, width, height, border, 876 format, type, pixels); 877 }-*/; 878 879 public final native void texImage2D (int target, int level, int internalformat, int format, int type, ImageData pixels) /*-{ 880 this.texImage2D(target, level, internalformat, format, type, pixels); 881 }-*/; 882 883 public final native void texImage2D (int target, int level, int internalformat, int format, int type, ImageElement image) /*-{ 884 this.texImage2D(target, level, internalformat, format, type, image); 885 }-*/; 886 887 public final native void texImage2D (int target, int level, int internalformat, int format, int type, CanvasElement canvas) /*-{ 888 this.texImage2D(target, level, internalformat, format, type, canvas); 889 }-*/; 890 891 public final native void texImage2D (int target, int level, int internalformat, int format, int type, VideoElement video) /*-{ 892 this.texImage2D(target, level, internalformat, format, type, video); 893 }-*/; 894 895 public final native void texParameterf (int target, int pname, float param) /*-{ 896 this.texParameterf(target, pname, param); 897 }-*/; 898 899 public final native void texParameteri (int target, int pname, int param) /*-{ 900 this.texParameteri(target, pname, param); 901 }-*/; 902 903 public final native void texSubImage2D (int target, int level, int xoffset, int yoffset, int width, int height, int format, 904 int type, ArrayBufferView pixels) /*-{ 905 this.texSubImage2D(target, level, xoffset, yoffset, width, height, 906 format, type, pixels); 907 }-*/; 908 909 public final native void texSubImage2D (int target, int level, int xoffset, int yoffset, int format, int type, ImageData pixels) /*-{ 910 this.texSubImage2D(target, level, xoffset, yoffset, format, type, 911 pixels); 912 }-*/; 913 914 public final native void texSubImage2D (int target, int level, int xoffset, int yoffset, int format, int type, 915 ImageElement image) /*-{ 916 this 917 .texSubImage2D(target, level, xoffset, yoffset, format, type, 918 image); 919 }-*/; 920 921 public final native void texSubImage2D (int target, int level, int xoffset, int yoffset, int format, int type, 922 CanvasElement canvas) /*-{ 923 this.texSubImage2D(target, level, xoffset, yoffset, format, type, 924 canvas); 925 }-*/; 926 927 public final native void texSubImage2D (int target, int level, int xoffset, int yoffset, int format, int type, 928 VideoElement video) /*-{ 929 this 930 .texSubImage2D(target, level, xoffset, yoffset, format, type, 931 video); 932 }-*/; 933 934 public final native void uniform1f (WebGLUniformLocation location, float x) /*-{ 935 this.uniform1f(location, x); 936 }-*/; 937 938 public final void uniform1fv (WebGLUniformLocation location, Float32Array v) { 939 this.uniform1fv(location, (JavaScriptObject)v); 940 } 941 942 public final void uniform1fv (WebGLUniformLocation location, float[] v) { 943 this.uniform1fv(location, toJsArray(v)); 944 } 945 946 private final native void uniform1fv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 947 this.uniform1fv(location, v); 948 }-*/; 949 950 public final native void uniform1i (WebGLUniformLocation location, int x) /*-{ 951 this.uniform1i(location, x); 952 }-*/; 953 954 public final void uniform1iv (WebGLUniformLocation location, Int32Array v) { 955 this.uniform1iv(location, (JavaScriptObject)v); 956 } 957 958 public final void uniform1iv (WebGLUniformLocation location, int[] v) { 959 this.uniform1iv(location, toJsArray(v)); 960 } 961 962 private final native void uniform1iv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 963 this.uniform1iv(location, v); 964 }-*/; 965 966 public final native void uniform2f (WebGLUniformLocation location, float x, float y) /*-{ 967 this.uniform2f(location, x, y); 968 }-*/; 969 970 public final void uniform2fv (WebGLUniformLocation location, Float32Array v) { 971 this.uniform2fv(location, (JavaScriptObject)v); 972 } 973 974 public final void uniform2fv (WebGLUniformLocation location, float[] v) { 975 this.uniform2fv(location, toJsArray(v)); 976 } 977 978 private final native void uniform2fv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 979 this.uniform2fv(location, v); 980 }-*/; 981 982 public final native void uniform2i (WebGLUniformLocation location, int x, int y) /*-{ 983 this.uniform2i(location, x, y); 984 }-*/; 985 986 public final void uniform2iv (WebGLUniformLocation location, Int32Array v) { 987 this.uniform2iv(location, (JavaScriptObject)v); 988 } 989 990 public final void uniform2iv (WebGLUniformLocation location, int[] v) { 991 this.uniform2iv(location, toJsArray(v)); 992 } 993 994 private final native void uniform2iv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 995 this.uniform2iv(location, v); 996 }-*/; 997 998 public final native void uniform3f (WebGLUniformLocation location, float x, float y, float z) /*-{ 999 this.uniform3f(location, x, y, z); 1000 }-*/; 1001 1002 public final void uniform3fv (WebGLUniformLocation location, Float32Array v) { 1003 this.uniform3fv(location, (JavaScriptObject)v); 1004 } 1005 1006 public final void uniform3fv (WebGLUniformLocation location, float[] v) { 1007 this.uniform3fv(location, toJsArray(v)); 1008 } 1009 1010 private final native void uniform3fv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 1011 this.uniform3fv(location, v); 1012 }-*/; 1013 1014 public final native void uniform3i (WebGLUniformLocation location, int x, int y, int z) /*-{ 1015 this.uniform3i(location, x, y, z); 1016 }-*/; 1017 1018 public final void uniform3iv (WebGLUniformLocation location, Int32Array v) { 1019 this.uniform3iv(location, (JavaScriptObject)v); 1020 } 1021 1022 public final void uniform3iv (WebGLUniformLocation location, int[] v) { 1023 1024 this.uniform3iv(location, toJsArray(v)); 1025 } 1026 1027 private final native void uniform3iv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 1028 this.uniform3iv(location, v); 1029 }-*/; 1030 1031 public final native void uniform4f (WebGLUniformLocation location, float x, float y, float z, float w) /*-{ 1032 this.uniform4f(location, x, y, z, w); 1033 }-*/; 1034 1035 public final void uniform4fv (WebGLUniformLocation location, Float32Array v) { 1036 this.uniform4fv(location, (JavaScriptObject)v); 1037 } 1038 1039 public final void uniform4fv (WebGLUniformLocation location, float[] v) { 1040 this.uniform4fv(location, toJsArray(v)); 1041 } 1042 1043 private final native void uniform4fv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 1044 this.uniform4fv(location, v); 1045 }-*/; 1046 1047 public final native void uniform4i (WebGLUniformLocation location, int x, int y, int z, int w) /*-{ 1048 this.uniform4i(location, x, y, z, w); 1049 }-*/; 1050 1051 public final void uniform4iv (WebGLUniformLocation location, Int32Array v) { 1052 this.uniform4iv(location, (JavaScriptObject)v); 1053 } 1054 1055 public final void uniform4iv (WebGLUniformLocation location, int[] v) { 1056 this.uniform4iv(location, toJsArray(v)); 1057 } 1058 1059 private final native void uniform4iv (WebGLUniformLocation location, JavaScriptObject v) /*-{ 1060 this.uniform4iv(location, v); 1061 }-*/; 1062 1063 public final void uniformMatrix2fv (WebGLUniformLocation location, boolean transpose, Float32Array value) { 1064 this.uniformMatrix2fv(location, transpose, (JavaScriptObject)value); 1065 } 1066 1067 public final void uniformMatrix2fv (WebGLUniformLocation location, boolean transpose, float[] value) { 1068 this.uniformMatrix2fv(location, transpose, toJsArray(value)); 1069 } 1070 1071 private final native void uniformMatrix2fv (WebGLUniformLocation location, boolean transpose, JavaScriptObject value) /*-{ 1072 this.uniformMatrix2fv(location, transpose, value); 1073 }-*/; 1074 1075 public final void uniformMatrix3fv (WebGLUniformLocation location, boolean transpose, Float32Array value) { 1076 this.uniformMatrix3fv(location, transpose, (JavaScriptObject)value); 1077 } 1078 1079 public final void uniformMatrix3fv (WebGLUniformLocation location, boolean transpose, float[] value) { 1080 this.uniformMatrix3fv(location, transpose, toJsArray(value)); 1081 } 1082 1083 private final native void uniformMatrix3fv (WebGLUniformLocation location, boolean transpose, JavaScriptObject value) /*-{ 1084 this.uniformMatrix3fv(location, transpose, value); 1085 }-*/; 1086 1087 public final void uniformMatrix4fv (WebGLUniformLocation location, boolean transpose, Float32Array value) { 1088 this.uniformMatrix4fv(location, transpose, (JavaScriptObject)value); 1089 } 1090 1091 public final void uniformMatrix4fv (WebGLUniformLocation location, boolean transpose, float[] value) { 1092 uniformMatrix4fv(location, transpose, toJsArray(value)); 1093 } 1094 1095 private final native void uniformMatrix4fv (WebGLUniformLocation location, boolean transpose, JavaScriptObject value) /*-{ 1096 this.uniformMatrix4fv(location, transpose, value); 1097 }-*/; 1098 1099 public final native void useProgram (WebGLProgram program) /*-{ 1100 this.useProgram(program); 1101 }-*/; 1102 1103 public final native void validateProgram (WebGLProgram program) /*-{ 1104 this.validateProgram(program); 1105 }-*/; 1106 1107 public final native void vertexAttrib1f (int indx, float x) /*-{ 1108 this.vertexAttrib1f(indx, x); 1109 }-*/; 1110 1111 public final void vertexAttrib1fv (int indx, Float32Array values) { 1112 this.vertexAttrib1fv(indx, (JavaScriptObject)values); 1113 } 1114 1115 public final void vertexAttrib1fv (int indx, float[] values) { 1116 this.vertexAttrib1fv(indx, toJsArray(values)); 1117 } 1118 1119 private final native void vertexAttrib1fv (int indx, JavaScriptObject values) /*-{ 1120 this.vertexAttrib1fv(indx, values); 1121 }-*/; 1122 1123 public final native void vertexAttrib2f (int indx, float x, float y) /*-{ 1124 this.vertexAttrib2f(indx, x, y); 1125 }-*/; 1126 1127 public final void vertexAttrib2fv (int indx, Float32Array values) { 1128 this.vertexAttrib2fv(indx, (JavaScriptObject)values); 1129 } 1130 1131 public final void vertexAttrib2fv (int indx, float[] values) { 1132 this.vertexAttrib2fv(indx, toJsArray(values)); 1133 } 1134 1135 private final native void vertexAttrib2fv (int indx, JavaScriptObject values) /*-{ 1136 this.vertexAttrib2fv(indx, values); 1137 }-*/; 1138 1139 public final native void vertexAttrib3f (int indx, float x, float y, float z) /*-{ 1140 this.vertexAttrib3f(indx, x, y, z); 1141 }-*/; 1142 1143 public final void vertexAttrib3fv (int indx, Float32Array values) { 1144 this.vertexAttrib3fv(indx, (JavaScriptObject)values); 1145 } 1146 1147 public final void vertexAttrib3fv (int indx, float[] values) { 1148 this.vertexAttrib3fv(indx, toJsArray(values)); 1149 } 1150 1151 private final native void vertexAttrib3fv (int indx, JavaScriptObject values) /*-{ 1152 this.vertexAttrib3fv(indx, values); 1153 }-*/; 1154 1155 public final native void vertexAttrib4f (int indx, float x, float y, float z, float w) /*-{ 1156 this.vertexAttrib4f(indx, x, y, z, w); 1157 }-*/; 1158 1159 public final void vertexAttrib4fv (int indx, Float32Array values) { 1160 this.vertexAttrib4fv(indx, (JavaScriptObject)values); 1161 } 1162 1163 public final void vertexAttrib4fv (int indx, float[] values) { 1164 this.vertexAttrib4fv(indx, toJsArray(values)); 1165 } 1166 1167 public final Float32Array toJsArray (float[] values) { 1168 Float32Array array = TypedArrays.createFloat32Array(values.length); 1169 array.set(values); 1170 return array; 1171 } 1172 1173 public final Int32Array toJsArray (int[] values) { 1174 Int32Array array = TypedArrays.createInt32Array(values.length); 1175 array.set(values); 1176 return array; 1177 } 1178 1179 private final native void vertexAttrib4fv (int indx, JavaScriptObject values) /*-{ 1180 this.vertexAttrib4fv(indx, values); 1181 }-*/; 1182 1183 public final native void vertexAttribPointer (int indx, int size, int type, boolean normalized, int stride, int offset) /*-{ 1184 this.vertexAttribPointer(indx, size, type, normalized, stride, offset); 1185 }-*/; 1186 1187 public final native void viewport (int x, int y, int width, int height) /*-{ 1188 this.viewport(x, y, width, height); 1189 }-*/; 1190 1191 /** Return the value for the passed pname. 1192 * 1193 * @param pname one of RENDERER, SHADING_LANGUAGE_VERSION, VENDOR, VERSION */ 1194 public final native String getParameterString (int pname) /*-{ 1195 return this.getParameter(pname); 1196 }-*/; 1197 1198 /** Return the value for the passed pname. 1199 * 1200 * @param pname one of ACTIVE_TEXTURE, ALPHA_BITS, BLEND_DST_ALPHA, BLEND_DST_RGB, BLEND_EQUATION_ALPHA, BLEND_EQUATION_RGB, 1201 * BLEND_SRC_ALPHA, BLEND_SRC_RGB, BLUE_BITS, CULL_FACE_MODE, DEPTH_BITS, DEPTH_FUNC, FRONT_FACE, 1202 * GENERATE_MIPMAP_HINT, GREEN_BITS, IMPLEMENTATION_COLOR_READ_FORMAT, IMPLEMENTATION_COLOR_READ_TYPE, 1203 * MAX_COMBINED_TEXTURE_IMAGE_UNITS, MAX_CUBE_MAP_TEXTURE_SIZE, MAX_FRAGMENT_UNIFORM_VECTORS, MAX_RENDERBUFFER_SIZE, 1204 * MAX_TEXTURE_IMAGE_UNITS, MAX_TEXTURE_SIZE, MAX_VARYING_VECTORS, MAX_VERTEX_ATTRIBS, 1205 * MAX_VERTEX_TEXTURE_IMAGE_UNITS, MAX_VERTEX_UNIFORM_VECTORS, NUM_COMPRESSED_TEXTURE_FORMATS, PACK_ALIGNMENT, 1206 * RED_BITS, SAMPLE_BUFFERS, SAMPLES, STENCIL_BACK_FAIL, STENCIL_BACK_FUNC, STENCIL_BACK_PASS_DEPTH_FAIL, 1207 * STENCIL_BACK_PASS_DEPTH_PASS, STENCIL_BACK_REF, STENCIL_BACK_VALUE_MASK, STENCIL_BACK_WRITEMASK, STENCIL_BITS, 1208 * STENCIL_CLEAR_VALUE, STENCIL_FAIL, STENCIL_FUNC, STENCIL_PASS_DEPTH_FAIL, STENCIL_PASS_DEPTH_PASS, STENCIL_REF, 1209 * STENCIL_VALUE_MASK, STENCIL_WRITEMASK, SUBPIXEL_BITS, UNPACK_ALIGNMENT */ 1210 public final native int getParameteri (int pname) /*-{ 1211 return this.getParameter(pname); 1212 }-*/; 1213 1214 /** Return the value for the passed pname. 1215 * 1216 * @param pname one of BLEND, CULL_FACE, DEPTH_TEST, DEPTH_WRITEMASK, DITHER, POLYGON_OFFSET_FILL, SAMPLE_COVERAGE_INVERT, 1217 * SCISSOR_TEST, STENCIL_TEST, UNPACK_FLIP_Y_WEBGL, UNPACK_PREMULTIPLY_ALPHA_WEBGL */ 1218 public final native boolean getParameterb (int pname) /*-{ 1219 return this.getParameter(pname); 1220 }-*/; 1221 1222 /** Return the value for the passed pname. 1223 * 1224 * @param pname one of DEPTH_CLEAR_VALUE, LINE_WIDTH, POLYGON_OFFSET_FACTOR, POLYGON_OFFSET_UNITS, SAMPLE_COVERAGE_VALUE */ 1225 public final native float getParameterf (int pname) /*-{ 1226 return this.getParameter(pname); 1227 }-*/; 1228 1229 /** Return the value for the passed pname. 1230 * 1231 * @param pname one of ARRAY_BUFFER_BINDING, COMPRESSED_TEXTURE_FORMATS, CURRENT_PROGRAM, ELEMENT_ARRAY_BUFFER_BINDING, 1232 * FRAMEBUFFER_BINDING, RENDERBUFFER_BINDING, TEXTURE_BINDING_2D, TEXTURE_BINDING_CUBE_MAP */ 1233 public final native <T extends WebGLObject> T getParametero (int pname) /*-{ 1234 return this.getParameter(pname); 1235 }-*/; 1236 1237 /** Return the value for the passed pname. 1238 * 1239 * @param pname one of ALIASED_LINE_WIDTH_RANGE, ALIASED_POINT_SIZE_RANGE, BLEND_COLOR, COLOR_CLEAR_VALUE, COLOR_WRITEMASK, 1240 * DEPTH_RANGE, MAX_VIEWPORT_DIMS, SCISSOR_BOX, VIEWPORT */ 1241 public final native <T extends ArrayBufferView> T getParameterv (int pname) /*-{ 1242 return this.getParameter(pname); 1243 }-*/; 1244 1245 /** Return the uniform value at the passed location in the passed program. */ 1246 public final native boolean getUniformb (WebGLProgram program, WebGLUniformLocation location) /*-{ 1247 return this.getUniform(program, location); 1248 }-*/; 1249 1250 /** Return the uniform value at the passed location in the passed program. */ 1251 public final native int getUniformi (WebGLProgram program, WebGLUniformLocation location) /*-{ 1252 return this.getUniform(program, location); 1253 }-*/; 1254 1255 /** Return the uniform value at the passed location in the passed program. */ 1256 public final native float getUniformf (WebGLProgram program, WebGLUniformLocation location) /*-{ 1257 return this.getUniform(program, location); 1258 }-*/; 1259 1260 /** Return the uniform value at the passed location in the passed program. */ 1261 public final native <T extends ArrayBufferView> T getUniformv (WebGLProgram program, WebGLUniformLocation location) /*-{ 1262 return this.getUniform(program, location); 1263 }-*/; 1264 1265 /** Return the information requested in pname about the vertex attribute at the passed index. 1266 * 1267 * @param pname one of VERTEX_ATTRIB_ARRAY_SIZE, VERTEX_ATTRIB_ARRAY_STRIDE, VERTEX_ATTRIB_ARRAY_TYPE */ 1268 public final native int getVertexAttribi (int index, int pname) /*-{ 1269 return this.getVertexAttrib(index, pname); 1270 }-*/; 1271 1272 /** Return the information requested in pname about the vertex attribute at the passed index. 1273 * 1274 * @param pname one of VERTEX_ATTRIB_ARRAY_ENABLED, VERTEX_ATTRIB_ARRAY_NORMALIZED */ 1275 public final native boolean getVertexAttribb (int index, int pname) /*-{ 1276 return this.getVertexAttrib(index, pname); 1277 }-*/; 1278 1279 /** Return the information requested in pname about the vertex attribute at the passed index. 1280 * 1281 * @param pname VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 1282 * @return {@link WebGLBuffer} */ 1283 public final native <T extends WebGLObject> T getVertexAttribo (int index, int pname) /*-{ 1284 return this.getVertexAttrib(index, pname); 1285 }-*/; 1286 1287 /** Return the information requested in pname about the vertex attribute at the passed index. 1288 * 1289 * @param pname CURRENT_VERTEX_ATTRIB 1290 * @return a {@link Float32Array} with 4 elements */ 1291 public final native Float32Array getVertexAttribv (int index, int pname) /*-{ 1292 return this.getVertexAttrib(index, pname); 1293 }-*/; 1294 1295 /** Return the value for the passed pname given the passed target. The type returned is the natural type for the requested 1296 * pname, as given in the following table: If an attempt is made to call this function with no WebGLTexture bound (see above), 1297 * an INVALID_OPERATION error is generated. 1298 * 1299 * @param pname one of TEXTURE_MAG_FILTER, TEXTURE_MIN_FILTER, TEXTURE_WRAP_S, TEXTURE_WRAP_T */ 1300 public final native int getTexParameter (int target, int pname) /*-{ 1301 return this.getTexParameter(target, pname); 1302 }-*/; 1303 1304 /** Return the value for the passed pname given the passed shader. 1305 * 1306 * @param pname one of DELETE_STATUS, COMPILE_STATUS */ 1307 public final native boolean getShaderParameterb (WebGLShader shader, int pname) /*-{ 1308 return this.getShaderParameter(shader, pname); 1309 }-*/; 1310 1311 /** Return the value for the passed pname given the passed shader. 1312 * 1313 * @param pname one of SHADER_TYPE, INFO_LOG_LENGTH, SHADER_SOURCE_LENGTH */ 1314 public final native int getShaderParameteri (WebGLShader shader, int pname) /*-{ 1315 return this.getShaderParameter(shader, pname); 1316 }-*/; 1317 1318 /** Return the value for the passed pname given the passed target. 1319 * 1320 * @param pname one of RENDERBUFFER_WIDTH, RENDERBUFFER_HEIGHT, RENDERBUFFER_INTERNAL_FORMAT, RENDERBUFFER_RED_SIZE, 1321 * RENDERBUFFER_GREEN_SIZE, RENDERBUFFER_BLUE_SIZE, RENDERBUFFER_ALPHA_SIZE, RENDERBUFFER_DEPTH_SIZE, 1322 * RENDERBUFFER_STENCIL_SIZE */ 1323 public final native int getRenderbufferParameter (int target, int pname) /*-{ 1324 return this.getRenderbufferParameter(target, pname); 1325 }-*/; 1326 1327 /** Return the value for the passed pname given the passed program. 1328 * 1329 * @param pname one of DELETE_STATUS, LINK_STATUS, VALIDATE_STATUS */ 1330 public final native boolean getProgramParameterb (WebGLProgram program, int pname) /*-{ 1331 return this.getProgramParameter(program, pname); 1332 }-*/; 1333 1334 /** Return the value for the passed pname given the passed program. 1335 * 1336 * @param pname one of INFO_LOG_LENGTH, ATTACHED_SHADERS, ACTIVE_ATTRIBUTES, ACTIVE_ATTRIBUTE_MAX_LENGTH, ACTIVE_UNIFORMS, 1337 * ACTIVE_UNIFORM_MAX_LENGTH */ 1338 public final native int getProgramParameteri (WebGLProgram program, int pname) /*-{ 1339 return this.getProgramParameter(program, pname); 1340 }-*/; 1341 1342 /** Return the value for the passed pname. 1343 * 1344 * @param pname one of BUFFER_SIZE, BUFFER_USAGE */ 1345 public final native int getBufferParameter (int target, int pname) /*-{ 1346 return this.getBufferParameter(target, pname); 1347 }-*/; 1348 1349 /** Return the value for the passed pname given the passed target and attachment. 1350 * 1351 * @param pname one of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, 1352 * FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ 1353 public final native int getFramebufferAttachmentParameteri (int target, int attachment, int pname) /*-{ 1354 return this 1355 .getFramebufferAttachmentParameter(target, attachment, pname); 1356 }-*/; 1357 1358 /** Return the value for the passed pname given the passed target and attachment. 1359 * 1360 * @param pname FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 1361 * @return {@link WebGLRenderbuffer} or {@link WebGLTexture} */ 1362 public final native <T extends WebGLObject> T getFramebufferAttachmentParametero (int target, int attachment, int pname) /*-{ 1363 return this 1364 .getFramebufferAttachmentParameter(target, attachment, pname); 1365 }-*/; 1366 } 1367