Skip to content

Latest commit

 

History

History
55 lines (37 loc) · 1.88 KB

README.md

File metadata and controls

55 lines (37 loc) · 1.88 KB

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  = Texture2d(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.