| 213 | } |
| 214 | |
| 215 | export function uploadPixelDataToTexture( |
| 216 | gl: WebGLRenderingContext, texture: WebGLTexture, |
| 217 | pixels: PixelData|ImageData|HTMLImageElement|HTMLCanvasElement| |
| 218 | HTMLVideoElement|ImageBitmap) { |
| 219 | webgl_util.callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, texture)); |
| 220 | if ((pixels as PixelData).data instanceof Uint8Array) { |
| 221 | if (env().getNumber('WEBGL_VERSION') === 2) { |
| 222 | webgl_util.callAndCheck( |
| 223 | gl, |
| 224 | () => gl.texSubImage2D( |
| 225 | gl.TEXTURE_2D, 0, 0, 0, pixels.width, pixels.height, gl.RGBA, |
| 226 | gl.UNSIGNED_BYTE, (pixels as PixelData).data)); |
| 227 | } else { |
| 228 | webgl_util.callAndCheck( |
| 229 | gl, |
| 230 | () => gl.texImage2D( |
| 231 | gl.TEXTURE_2D, 0, gl.RGBA, pixels.width, pixels.height, 0, |
| 232 | gl.RGBA, gl.UNSIGNED_BYTE, (pixels as PixelData).data)); |
| 233 | } |
| 234 | } else { |
| 235 | if (env().getNumber('WEBGL_VERSION') === 2) { |
| 236 | webgl_util.callAndCheck( |
| 237 | gl, |
| 238 | () => gl.texSubImage2D( |
| 239 | gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, |
| 240 | (pixels as ImageData | HTMLImageElement | HTMLCanvasElement | |
| 241 | HTMLVideoElement | ImageBitmap))); |
| 242 | } else { |
| 243 | webgl_util.callAndCheck( |
| 244 | gl, |
| 245 | () => gl.texImage2D( |
| 246 | gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, |
| 247 | pixels as ImageData | HTMLImageElement | HTMLCanvasElement | |
| 248 | HTMLVideoElement | ImageBitmap)); |
| 249 | } |
| 250 | } |
| 251 | |
| 252 | webgl_util.callAndCheck(gl, () => gl.bindTexture(gl.TEXTURE_2D, null)); |
| 253 | } |
| 254 | |
| 255 | export function createBufferFromOutputTexture( |
| 256 | gl2: WebGL2RenderingContext, rows: number, columns: number, |