texture.js
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:browserify-compatible webgl 2D texture lib.
# texture.js

Browserify-compatible, streamable webgl 2D texture module.

````javascript

var texture = require('texture.js')
  , canvas = document.createElement('canvas')
  , gl = canvas.getContext('experimental-webgl')
  , Texture = texture(gl)

Texture.fromURL('image.png', function(err, texture) {
  var img = new Image
  img.src = 'someotherimg.jpg'
  img.onload = function() {
    texture.writeImage(
        img
      , 0
      , 0
      , img.width
      , img.height
      , Math.floor(texture.width()/2)
      , Math.floor(texture.height()/2)
      , img.width
      , img.height
    )
  }
})

````

## API

### require('texture.js') -> function texture(gl){}

Returns a function that accepts a WebGL context and returns
the `Texture` constructor function.

### texture(gl) -> Texture

Returns the `Texture` constructor when provided a gl context.

### Texture.fromCanvas
### Texture.fromImage(image[, options], ready)

Static method that accepts a `HTMLCanvas` or `Image` element,
as well as optional [options](#options) object and a node-style
`ready` callback (`function(err, texture instance) {}`).

Dimensions are pulled from the incoming element.

> ### NB:
> This method is designed to accept `Image` objects
> that have already loaded -- that is, their `onload`
> has already been called.
>
> For images that haven't loaded yet, use `Texture.fromURL`.

### Texture.fromURL(url[, options], ready)

Static method that accepts a string URL to load as a texture.
Otherwise follows the `fromImage` API.

> ### NB:
> Textures should be loaded from the same domain,
> or from a domain that provides the appropriate CORS
> headers.

### Texture.create(dimensions, color[, options], ready)

Static method that accepts a set of integer dimensions `[width, height]`, a color -- either `null` for empty textures or `[red, green, blue, alpha]` floating point values, an optional [options](#options) object, and a node-style callback.

### Texture#handle() -> WebGL texture handle

Returns a handle suitable for passing to `gl.bindTexture`.

````javascript
// e.g.,
gl.bindTexture(gl.TEXTURE_2D, myTexture.handle())
````

### Texture.writeImage(img, sx, sy, sw, sh, dx, dy, dw, dh)

Writes a subset of `img` (using `sx, sy, sw, sh`) to the texture
using `gl.texSubImage2D` at the destination using `dx, dx, dw, dh`.

`img` may be a loaded `Image` object, an `HTMLCanvasElement`, or an `HTMLVideoElement`.

> ### NB:
> When using HTMLCanvasElements or HTMLVideoElements,
> or when the image would be clipped against the texture dimensions
> or otherwise resized, the image will be drawn to a temporary
> canvas element and copied using `canvas.getImageData`. 

### Texture.asFramebuffer() -> WebGL Render buffer handle

Creates and returns a render buffer handle whose storage is specified as the current texture (for render-to-texture).

### Texture.enable(textureUnit = 0) -> textureUnit

Enables the texture on the specified `textureUnit`. Equivalent to

````javascript
    gl.activeTexture(gl['TEXTURE'+textureUnit])
    gl.bindTexture(gl.TEXTURE_2D, myTexture.handle())
    return textureUnit
````

### Texture.width() -> integer width
### Texture.height() -> integer height

Returns the requested dimension of the image.

### Texture.createWriteStream([dx, dy, dw, dh]) -> TextureStream

Return a writable stream to this texture. `data` events will be
delegated to `texture.writeImage(DATA_EVENT_PAYLOAD, 0, 0, incoming_width, incoming_height, dx, dy, dw, dh)`.

## Options

### mag

`gl.texParameteri(TEXTURE_2D, TEXTURE_MAG_FILTER, )`

**Values**
* `"linear"`: `gl.LINEAR`
* `"nearest"`: `gl.NEAREST`

### min

`gl.texParameteri(TEXTURE_2D, TEXTURE_MIN_FILTER, )`

**Values**
* `"linear"`: `gl.LINEAR`
* `"nearest"`: `gl.NEAREST`
* `"mipmap"`: `gl.LINEAR_MIPMAP_LINEAR`

> ### NB:
> `mipmap` can only be used with power of two textures
> whose edges are set to `clamp`.
>
> Using mipmap will automatically do the required
> setup (calling gl.generateMipmap(), etc). 

### wrap_width
### wrap_height

`gl.texParameteri(TEXTURE_2D, TEXTURE_WRAP_S|T, )`

**Values**
* `"repeat"`: `gl.REPEAT`
* `"clamp"`: `gl.CLAMP_TO_EDGE`




本源码包内暂不包含可直接显示的源代码文件,请下载源码包。