node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »

gl-texture2d-read-float

gl-texture2d-read-float

experimental

Read out the contents of a floating-point gl-texture2d.

This will eventually be supported natively in WebGL (it's listed in the OpenGL ES 3 spec), but this fills that need until then!

Usage

NPM

read(glTex2d, done(err, data))

Reads out the contents of glTex2d, which should be an instance of gl-texture2d. When complete, done(err, data) will be called where data is a Float32Array containing the resulting floats in the texture.

const canvas    = document.createElement('canvas')
const gl        = require('gl-context')(canvas)
 
const read      = require('gl-texture2d-read-float')
const Texture2d = require('gl-texture2d')
const baboon    = require('baboon-image')
const assert    = require('assert')
 
const texture  = baboon(gl, baboon)
 
read(texture, function(err, data) {
  if (err) throw err
 
  assert.deepEqual(data, baboon.data)
})

A few things to note:

  • Right now, this is slow as it requires reading data back from the GPU. There's not much that can be done about this for the time being unfortunately.
  • The data is retrieved synchronously under the hood, but the API has been made asynchronous in preparation for WebGL's eventual async readPixels equivalent.
  • Only gl.RGBA/gl.FLOAT textures are currently supported. Pull requests are, however, very welcome! :)

Contributing

See stackgl/contributing for details.

License

MIT. See LICENSE.md for details.