typescript bug fix, add typescript example

This commit is contained in:
lang 2014-04-13 21:10:30 +08:00
parent 3d53b1d3ca
commit 42acb814e4
43 changed files with 334 additions and 641 deletions

View File

@ -4,7 +4,12 @@ var fs = require('fs');
var ROOT = "../src/";
var OUTPUT_PORTAL = "qtek.js";
var template = fs.readFileSync("qtek_template.js", "utf-8")
var TS_ROOT = "../typescript/";
var TS_PORTAL = "qtek.d.ts";
var template = fs.readFileSync("qtek_template.js", "utf-8");
var tsReferenceList = [];
glob("**/*.js", {
cwd : ROOT
@ -27,13 +32,26 @@ glob("**/*.js", {
return memo[propName];
}, namespace);
object[baseName] = "__require('qtek/"+filePathWithOutExt+"')__";
})
object[baseName] = "__require('qtek/" + filePathWithOutExt + "')__";
// Get typescript reference list
var tsPath = TS_ROOT + filePathWithOutExt + ".d.ts";
if (fs.existsSync(tsPath)) {
tsReferenceList.push(filePathWithOutExt);
}
});
var jsString = JSON.stringify( namespace, null, '\t' );
jsString = jsString.replace(/\"\__require\((\S*?)\)__\"/g, 'require($1)')
var output = template.replace(/\{\{\$exportsObject\}\}/, jsString);
fs.writeFileSync( ROOT+OUTPUT_PORTAL, output, "utf-8");
fs.writeFileSync(ROOT + OUTPUT_PORTAL, output, "utf-8");
// Write to ts reference file
var referenceCode = tsReferenceList.map(function(path) {
return '///<reference path="' + path + '" />';
}).join('\n');
fs.writeFileSync(TS_ROOT + TS_PORTAL, referenceCode, "utf-8");
});

View File

@ -37,7 +37,7 @@ define(function(require) {
joint : new Geometry.Attribute('joint', 'float', 4, 'JOINT', true),
// For wireframe display
// http://codeflow.org/entries/2012/aug/02/easy-wireframe-display-with-barycentric-coordinates/
barycentric : new Geometry.Attribute('barycentric', 'float', 3, null, true),
barycentric : new Geometry.Attribute('barycentric', 'float', 3, null, true)
},
hint : glenum.DYNAMIC_DRAW,

View File

@ -105,7 +105,6 @@ define(function(require) {
if (! texture.width) {
throw new Error("The texture attached to color buffer is not a valid.");
return;
}
_gl.bindFramebuffer(_gl.FRAMEBUFFER, this.getFrameBuffer(_gl));
@ -118,7 +117,7 @@ define(function(require) {
// http://blog.tojicode.com/2012/07/using-webgldepthtexture.html
attachment = attachment || _gl.COLOR_ATTACHMENT0;
target = target || _gl.TEXTURE_2D;
mipmapLevel = mipmapLevel || 0
mipmapLevel = mipmapLevel || 0;
if (attachment === _gl.DEPTH_ATTACHMENT) {
@ -163,4 +162,4 @@ define(function(require) {
FrameBuffer.DEPTH_STENCIL_ATTACHMENT = glenum.DEPTH_STENCIL_ATTACHMENT;
return FrameBuffer;
})
});

View File

@ -90,7 +90,7 @@ define(function(require) {
useFace : true,
//Max Value of Uint16, i.e. 0xffff
chunkSize : 65535,
chunkSize : 65535
}, function() {
// Use cache
this.cache = new Cache();

View File

@ -9,11 +9,11 @@
<div id="time" style="position:absolute;left:10px;top:10px;color:white;"></div>
<script type="text/javascript">
require(['qtek/qtek'], function(qtek){
var Shader = qtek.Shader
var Material = qtek.Material
var Mesh = qtek.Mesh
var Cube = qtek.geometry.Cube
var meshUtil = qtek.util.mesh
var Shader = qtek.Shader;
var Material = qtek.Material;
var Mesh = qtek.Mesh;
var Cube = qtek.geometry.Cube;
var meshUtil = qtek.util.mesh;
var shaderLibrary = qtek.shader.library;
var animation = new qtek.animation.Animation;
animation.start();

View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Cubes</title>
</head>
<body>
<script type="text/javascript" src="../../dist/qtek.js"></script>
<script type="text/javascript" src="js/cubes.js"></script>
</body>
</html>

View File

@ -0,0 +1,40 @@
///<reference path="../../../typescript/qtek.d.ts" />
var renderer = new qtek.Renderer();
var scene = new qtek.Scene();
var camera = new qtek.camera.Perspective();
var animation = new qtek.animation.Animation();
animation.start();
renderer.resize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.canvas);
camera.aspect = renderer.width / renderer.height;
var rootNode = new qtek.Node();
var cubeGeo = new qtek.geometry.Cube();
var cubeMat = new qtek.Material({
shader: qtek.shader.library.get('buildin.basic', "diffuseMap")
});
var diffuseTexture = new qtek.texture.Texture2D();
diffuseTexture.load('../assets/textures/crate.gif');
cubeMat.setUniform("diffuseMap", diffuseTexture);
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
for (var k = 0; k < 10; k++) {
var mesh = new qtek.Mesh({
material: cubeMat,
geometry: cubeGeo
});
mesh.scale.set(0.5, 0.5, 0.5);
mesh.position.set(10 - Math.random() * 20, 10 - Math.random() * 20, 10 - Math.random() * 20);
rootNode.add(mesh);
}
}
}
scene.add(rootNode);
animation.on('frame', function (deltaTime) {
renderer.render(scene, camera);
rootNode.rotation.rotateY(0.01);
});

View File

@ -0,0 +1,40 @@
///<reference path="../../../typescript/qtek.d.ts" />
var renderer: qtek.Renderer = new qtek.Renderer();
var scene: qtek.Scene = new qtek.Scene();
var camera: qtek.camera.Perspective = new qtek.camera.Perspective();
var animation: qtek.animation.Animation = new qtek.animation.Animation();
animation.start();
renderer.resize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.canvas);
camera.aspect = renderer.width / renderer.height;
var rootNode: qtek.Node = new qtek.Node();
var cubeGeo: qtek.geometry.Cube = new qtek.geometry.Cube();
var cubeMat: qtek.Material = new qtek.Material({
shader: qtek.shader.library.get('buildin.basic', "diffuseMap")
});
var diffuseTexture: qtek.texture.Texture2D = new qtek.texture.Texture2D();
diffuseTexture.load('../assets/textures/crate.gif');
cubeMat.setUniform("diffuseMap", diffuseTexture);
for(var i:number = 0; i < 10; i++) {
for(var j: number = 0; j < 10; j++) {
for(var k: number = 0; k < 10; k++) {
var mesh: qtek.Mesh = new qtek.Mesh({
material: cubeMat,
geometry: cubeGeo
});
mesh.scale.set(0.5, 0.5, 0.5);
mesh.position.set(10-Math.random()*20, 10-Math.random()*20, 10-Math.random() * 20);
rootNode.add(mesh);
}
}
}
scene.add(rootNode);
animation.on('frame', function(deltaTime) {
renderer.render(scene, camera);
rootNode.rotation.rotateY(0.01);
});

View File

@ -1,6 +1,5 @@
///<reference path="Geometry.d.ts" />
///<reference path="StaticGeometry.d.ts" />
///<reference path="webgl.d.ts" />
///<reference path="math/Matrix4.d.ts" />
declare module qtek {

View File

@ -1,7 +1,6 @@
///<reference path="math/BoundingBox.d.ts" />
///<reference path="core/Base.d.ts" />
///<reference path="core/Cache.d.ts" />
///<reference path="webgl.d.ts" />
declare module qtek {
interface IGeometryAttributeBuffer {

View File

@ -1,10 +1,20 @@
///<reference path="core/Base.d.ts" />
///<reference path="Shader.d.ts" />
///<reference path="webgl.d.ts" />
declare module qtek {
interface IMaterialOption {
name?: string;
shader?: Shader;
depthTest?: boolean;
depthMask?: boolean;
transparent?: boolean;
blend?: (gl: WebGLRenderingContext) => void;
}
export class Material extends core.Base {
constructor(option?: IMaterialOption);
name: string;
uniforms: IDictionary<IShaderUniform>;
@ -23,7 +33,7 @@ declare module qtek {
setUniform(symbol: string, value: any): void;
setUniforms(object: object): void;
setUniforms(object: Object): void;
enableUniform(symbol: string): void;
@ -32,7 +42,7 @@ declare module qtek {
isUniformEnabled(symbol: string): void;
set(symbol: string, value: any): void;
set(object: object): void;
set(object: Object): void;
get(symbol: string): any;

View File

@ -2,7 +2,6 @@
///<reference path="Material.d.ts" />
///<reference path="Geometry.d.ts" />
///<reference path="Skeleton.d.ts" />
///<reference path="webgl.d.ts" />
declare module qtek {
interface IMeshOption extends INodeOption {

View File

@ -52,7 +52,7 @@ declare module qtek {
getDescendantByName(name: string): Node;
traverse(callback: (current: Node, parent: Node) => void, parent?: Node, ctor?: T): void;
traverse(callback: (current: Node, parent: Node) => void, parent?: Node, ctor?: Function): void;
setLocalTransform(matrix: math.Matrix4): void;

View File

@ -8,8 +8,6 @@
///<reference path="Texture.d.ts" />
///<reference path="FrameBuffer.d.ts" />
///<reference path="math/Vector2.d.ts" />
///<reference path="webgl.d.ts" />
declare module qtek {
interface IRendererOption {
@ -107,19 +105,22 @@ declare module qtek {
screenToNdc(x: number, y: number, out?: math.Vector2): math.Vector2;
// Events
on(name: 'beforerender', handler: (renderer: Renderer, scene: Scene, camera: Camera) => void, context?: any);
on(name: 'beforerender:opaque', handler: (renderer: Renderer, queue: IRenderable[]) => void, context?: any);
on(name: 'beforerender:transparent', handler: (renderer: Renderer, queue: IRenderable[]) => void, context?: any);
on(name: 'afterrender:opaque', handler: (renderer: Renderer, queue: IRenderable[], renderInfo: IRenderInfo) => void, context?: any);
on(name: 'afterrender:transparent', handler: (renderer: Renderer, queue: IRenderable[], renderInfo: IRenderInfo) => void, context?: any);
on(name: 'afterrender', handler: (renderer: Renderer, scene: Scene, camera: Camera, renderInfo: IRenderInfo) => void, context?: any);
on(name: 'beforerender', handler: (renderer?: Renderer, scene?: Scene, camera?: Camera) => void, context?: any): void;
on(name: 'beforerender:opaque', handler: (renderer?: Renderer, queue?: IRenderable[]) => void, context?: any): void;
on(name: 'beforerender:transparent', handler: (renderer?: Renderer, queue?: IRenderable[]) => void, context?: any): void;
on(name: 'afterrender:opaque', handler: (renderer?: Renderer, queue?: IRenderable[], renderInfo?: IRenderInfo) => void, context?: any): void;
on(name: 'afterrender:transparent', handler: (renderer?: Renderer, queue?: IRenderable[], renderInfo?: IRenderInfo) => void, context?: any): void;
on(name: 'afterrender', handler: (renderer?: Renderer, scene?: Scene, camera?: Camera, renderInfo?: IRenderInfo) => void, context?: any): void;
on(name: string, handler: Function, context?: any): void;
before(name: 'render', handler: (renderer: Renderer, scene: Scene, camera: Camera) => void, context?: any);
before(name: 'render:opaque', handler: (renderer: Renderer, queue: IRenderable[]) => void, context?: any);
before(name: 'render:transparent', handler: (renderer: Renderer, queue: IRenderable[]) => void, context?: any);
after(name: 'render:opaque', handler: (renderer: Renderer, queue: IRenderable[], renderInfo: IRenderInfo) => void, context?: any);
after(name: 'render:transparent', handler: (renderer: Renderer, queue: IRenderable[], renderInfo: IRenderInfo) => void, context?: any);
after(name: 'render', handler: (renderer: Renderer, scene: Scene, camera: Camera, renderInfo: IRenderInfo) => void, context?: any);
before(name: 'render', handler: (renderer?: Renderer, scene?: Scene, camera?: Camera) => void, context?: any): void;
before(name: 'render:opaque', handler: (renderer?: Renderer, queue?: IRenderable[]) => void, context?: any): void;
before(name: 'render:transparent', handler: (renderer?: Renderer, queue?: IRenderable[]) => void, context?: any): void;
after(name: 'render:opaque', handler: (renderer?: Renderer, queue?: IRenderable[], renderInfo?: IRenderInfo) => void, context?: any): void;
after(name: 'render:transparent', handler: (renderer?: Renderer, queue?: IRenderable[], renderInfo?: IRenderInfo) => void, context?: any): void;
after(name: 'render', handler: (renderer?: Renderer, scene?: Scene, camera?: Camera, renderInfo?: IRenderInfo) => void, context?: any): void;
before(name: string, handler: Function, context?: any): void;
after(name: string, handler: Function, context?: any): void;
static opaqueSortFunc(x: IRenderable, y: IRenderable): boolean;

View File

@ -1,8 +1,6 @@
///<reference path="Material.d.ts" />
///<reference path="Shader.d.ts" />
///<reference path="Node.d.ts" />
///<reference path="webgl.d.ts" />
declare module qtek {
interface IRenderable {

View File

@ -1,7 +1,6 @@
///<reference path="core/util.d.ts" />
///<reference path="core/Cache.d.ts" />
///<reference path="core/Base.d.ts" />
///<reference path="webgl.d.ts" />
declare module qtek {
interface IShaderAttribSemantic {

View File

@ -26,7 +26,7 @@ declare module qtek {
getSubSkinMatrices(meshId: number, joints: number[]): Float32Array;
addClip(clip: animation.SkinningClip, mapRule?: object): number;
addClip(clip: animation.SkinningClip, mapRule?: Object): number;
removeClip(clip: animation.SkinningClip): void;

View File

@ -1,5 +1,4 @@
///<reference path="Geometry.d.ts" />
///<reference path="webgl.d.ts" />
///<reference path="math/Matrix4.d.ts" />
declare module qtek {

View File

@ -1,6 +1,5 @@
///<reference path="core/Base.d.ts" />
///<reference path="core/Cache.d.ts" />
///<reference path="webgl.d.ts" />
declare module qtek {
interface ITextureOption {

View File

@ -12,7 +12,7 @@ declare module qtek {
stage?: IStage;
}
interface IAnimationOption {
interface IAnimationAnimateOption {
loop?: boolean;
getter?: (key: string) => any;
setter?: (key: string, value: any) => any;
@ -20,24 +20,24 @@ declare module qtek {
interface IAnimationDeferred<T> {
when(time: number, props: Object) : IAnimationDeferred;
when(time: number, props: Object) : IAnimationDeferred<T>;
during(callback: (target: T, percent: number)=> any): IAnimationDeferred;
during(callback: (target: T, percent: number)=> any): IAnimationDeferred<T>;
start(): IAnimationDeferred;
start(easing: string): IAnimationDeferred;
start(easing: (percent: number) => number): IAnimationDeferred;
start(): IAnimationDeferred<T>;
start(easing: string): IAnimationDeferred<T>;
start(easing: (percent: number) => number): IAnimationDeferred<T>;
stop(): IAnimationDeferred;
stop(): IAnimationDeferred<T>;
delay(time: string): IAnimationDeferred;
delay(time: string): IAnimationDeferred<T>;
done(callback: Function): IAnimationDeferred;
done(callback: Function): IAnimationDeferred<T>;
}
export class Animation extends qtek.core.Base {
constructor(stage?: IStage);
constructor(option?: IAnimationOption);
stage: IStage;
@ -53,7 +53,7 @@ declare module qtek {
stop(): void;
animate<T>(target: T, options: IAnimationOption): IAnimationDeferred<T>;
animate<T>(target: T, options: IAnimationAnimateOption): IAnimationDeferred<T>;
}
}
}

View File

@ -7,7 +7,7 @@ declare module qtek {
output?: T;
}
interface IClipInputEntry<T extends BlendClip> {
interface IBlend1DClipInputEntry<T extends BlendClip> {
position: number;
clip: T;
offset: number;
@ -15,9 +15,11 @@ declare module qtek {
export class Blend1DClip<T extends BlendClip> extends Clip {
constructor(option?: IBlend1DClipOption<T>);
output: T;
inputs: IClipInputEntry[];
inputs: IBlend1DClipInputEntry<T>[];
position: number;

View File

@ -8,21 +8,23 @@ declare module qtek {
output?: T;
}
interface IClipInputEntry<T extends BlendClip> {
position: qtek.math.Vector2;
interface IBlend2DClipInputEntry<T extends BlendClip> {
position: math.Vector2;
clip: T;
offset: number;
}
export class Blend2DClip<T extends BlendClip> extends Clip {
constructor(option?: IBlend2DClipOption<T>);
output: T;
inputs: IClipInputEntry[];
inputs: IBlend2DClipInputEntry<T>[];
position: number;
addInput(position: qtek.math.Vector2, inputClip: T, offset: number);
addInput(position: math.Vector2, inputClip: T, offset: number);
}
}
}

View File

@ -2,8 +2,8 @@ declare module qtek {
export module animation {
interface IClipOption<T> {
target?: T;
interface IClipOption {
target?: any;
life?: number;
delay?: number;
gap?: number;
@ -15,12 +15,14 @@ declare module qtek {
string;
(percent: number): number;
}
onframe?: (target: T, schedule: number) => void;
onframe?: (target: any, schedule: number) => void;
onrestart?: () => void;
ondestroy?: () => void;
}
export class Clip<T> {
export class Clip {
constructor(option?: IClipOption);
gap: number;
@ -46,7 +48,7 @@ declare module qtek {
export class BlendClip extends Clip {
blend1D(c1: Clip , c2: Clip, w: number): void;
blend1D(c1: Clip, c2: Clip, w: number): void;
blend2D(c1: Clip, c2: Clip, c3: Clip, f: number, g: number): void;

View File

@ -9,7 +9,7 @@ declare module qtek {
responseType?: string;
}
export class Task extends core.mixin.notifier {
export class Task implements core.mixin.notifier {
resolve(data?: any): void;
@ -21,6 +21,16 @@ declare module qtek {
isSettled(): boolean;
trigger(name: string, ...args): void;
on(name: string, action: Function, context?:any): void;
once(name: string, action: Function, context?:any): void;
off(name: string, action?: Function): void;
has(name: string, action: Function): void;
static makeTask(): Task;
static makeRequestTask(url: string): Task;

View File

@ -12,7 +12,7 @@ declare module qtek {
bottom?: number;
}
export class Orthographic {
export class Orthographic extends Camera {
constructor(option?: IOrthographicCameraOption);

View File

@ -10,7 +10,7 @@ declare module qtek {
far?: number;
}
export class Perspective {
export class Perspective extends Camera {
constructor(option?: IPerspectiveCameraOption);

View File

@ -55,7 +55,7 @@ declare module qtek {
render(renderer: Renderer): void;
updateParameter(outputName: string, renderer: Renderer): object;
updateParameter(outputName: string, renderer: Renderer): Object;
setParameter(name: string, value: any): void;

View File

@ -1,5 +1,4 @@
///<reference path="../Texture.d.ts" />
///<reference path="../webgl.d.ts" />
declare module qtek {
export module compositor {

View File

@ -4,8 +4,18 @@ declare module qtek {
export module core {
export class Base extends mixin.notifier {
export class Base implements mixin.notifier {
__GUID__ : number
trigger(name: string, ...args): void;
on(name: string, action: Function, context?:any): void;
once(name: string, action: Function, context?:any): void;
off(name: string, action?: Function): void;
has(name: string, action: Function): void;
}
}
}

View File

@ -1,12 +1,12 @@
declare module qtek {
interface IList<T> {
[index: number]: T,
length: number
[index: number]: T;
length: number;
}
interface IDictionary<T> {
[index: string]: T
[index: string]: T;
}
}

View File

@ -1,4 +1,3 @@
///<reference path="../webgl.d.ts" />
declare module qtek {
export module core {

View File

@ -1,33 +1,33 @@
declare module qtek{
interface INotifierEventHandler {
action: Function;
context: any;
}
export module core {
export module mixin {
interface IHandler {
action: Function;
context: any;
}
export class notifier {
export interface notifier {
trigger(name: string, ...args): void;
trigger?(name: string, ...args): void;
on(name: string, action: Function, context?:any): IHandler;
on?(name: string, action: Function, context?:any): void;
once(name: string, action: Function, context?:any): IHandler;
once?(name: string, action: Function, context?:any): void;
before(name: string, action: Function, context?:any): IHandler;
before?(name: string, action: Function, context?:any): void;
after(name: string, action: Function, context?:any): IHandler;
after?(name: string, action: Function, context?:any): void;
success(action: Function, context?:any): IHandler;
success?(action: Function, context?:any): void;
error(action: Function, context?:any): IHandler;
error?(action: Function, context?:any): void;
off(name: string, action?: Function): void;
off?(name: string, action?: Function): void;
has(name: string, action: Function): void;
has?(name: string, action: Function): void;
}
}
}

View File

@ -1,4 +1,3 @@
///<reference path="../webgl.d.ts" />
declare module qtek {
export module core {

View File

@ -1,4 +1,3 @@
///<reference path="../webgl.d.ts" />
///<reference path="container.d.ts" />
declare module qtek {
@ -11,7 +10,7 @@ declare module qtek {
}
interface DictionaryIterator<T, TResult> {
(item: T, key: string, obj: IDictionary): TResult;
(item: T, key: string, obj: IDictionary<T>): TResult;
}
export function genGUID(): number;

View File

@ -20,12 +20,13 @@ declare module qtek {
bufferRootPath: string;
load(string: url): void;
load(url: string): void;
parse(json: object): compositor.Compositor;
parse(json: Object): compositor.Compositor;
on(name: "success", handler: (compositor: compositor.Compositor) => void, context?: any);
success(handler: (compositor: compositor.Compositor) => void, context?: any);
once(name: "success", handler: (compositor: compositor.Compositor) => void, context?: any): void;
once(name: string, handler: Function, context?: any): void;
success(handler: (compositor: compositor.Compositor) => void, context?: any): void;
}
}
}

View File

@ -30,7 +30,7 @@ declare module qtek {
export class GLTF extends core.Base {
constructor(option?: IGLTFLoaderOption): void;
constructor(option?: IGLTFLoaderOption);
rootPath: string;
textureRootPath: string;
@ -40,10 +40,11 @@ declare module qtek {
load(url: string): void;
parse(json: object): IGLTFLoaderResult;
parse(json: Object): IGLTFLoaderResult;
on(name: "success", (result: IGLTFLoaderResult)=> void, context?: any);
success((result: IGLTFLoaderResult)=> void, context?: any);
once(name: "success", handler: (result: IGLTFLoaderResult)=> void, context?: any): void;
once(name: string, handler: Function, context?: any): void;
success(handler: (result: IGLTFLoaderResult)=> void, context?: any);
}
}
}

View File

@ -19,10 +19,11 @@ declare module qtek {
load(url: string): void;
parse(data: object): Mesh[];
parse(data: Object): Mesh[];
on(name: "success", handler: (meshList: Mesh[])=> void, context?: any);
success(handler: (meshList: Mesh[])=> void, context?: any);
once(name: "success", handler: (meshList: Mesh[])=> void, context?: any): void;
once(name: string, handler: Function, context?: any): void;
success(handler: (meshList: Mesh[])=> void, context?: any): void;
}
}
}

View File

@ -1,6 +1,5 @@
///<reference path="../Mesh.d.ts" />
///<reference path="../Scene.d.ts" />
///<reference path="../webgl.d.ts" />
declare module qtek {
export module plugin {

View File

@ -1,6 +1,5 @@
///<reference path="../Mesh.d.ts" />
///<reference path="../Scene.d.ts" />
///<reference path="../webgl.d.ts" />
declare module qtek {
export module plugin {

78
typescript/qtek.d.ts vendored Normal file
View File

@ -0,0 +1,78 @@
///<reference path="Camera" />
///<reference path="DynamicGeometry" />
///<reference path="FrameBuffer" />
///<reference path="Geometry" />
///<reference path="Joint" />
///<reference path="Light" />
///<reference path="Material" />
///<reference path="Mesh" />
///<reference path="Node" />
///<reference path="Renderer" />
///<reference path="Scene" />
///<reference path="Shader" />
///<reference path="Skeleton" />
///<reference path="StaticGeometry" />
///<reference path="Texture" />
///<reference path="animation/Animation" />
///<reference path="animation/Blend1DClip" />
///<reference path="animation/Blend2DClip" />
///<reference path="animation/Clip" />
///<reference path="animation/SamplerClip" />
///<reference path="animation/SkinningClip" />
///<reference path="animation/TransformClip" />
///<reference path="async/Task" />
///<reference path="async/TaskGroup" />
///<reference path="camera/Orthographic" />
///<reference path="camera/Perspective" />
///<reference path="compositor/Compositor" />
///<reference path="compositor/Graph" />
///<reference path="compositor/Node" />
///<reference path="compositor/Pass" />
///<reference path="compositor/SceneNode" />
///<reference path="compositor/TextureNode" />
///<reference path="compositor/texturePool" />
///<reference path="core/Base" />
///<reference path="core/Cache" />
///<reference path="core/glinfo" />
///<reference path="core/mixin/derive" />
///<reference path="core/mixin/notifier" />
///<reference path="core/request" />
///<reference path="core/util" />
///<reference path="geometry/Cone" />
///<reference path="geometry/Cube" />
///<reference path="geometry/Cylinder" />
///<reference path="geometry/Plane" />
///<reference path="geometry/Sphere" />
///<reference path="light/Ambient" />
///<reference path="light/Directional" />
///<reference path="light/Point" />
///<reference path="light/Spot" />
///<reference path="loader/FX" />
///<reference path="loader/GLTF" />
///<reference path="loader/ThreeModel" />
///<reference path="math/BoundingBox" />
///<reference path="math/Frustum" />
///<reference path="math/Matrix2" />
///<reference path="math/Matrix2d" />
///<reference path="math/Matrix3" />
///<reference path="math/Matrix4" />
///<reference path="math/Plane" />
///<reference path="math/Quaternion" />
///<reference path="math/Ray" />
///<reference path="math/Value" />
///<reference path="math/Vector2" />
///<reference path="math/Vector3" />
///<reference path="math/Vector4" />
///<reference path="particleSystem/Emitter" />
///<reference path="particleSystem/ForceField" />
///<reference path="particleSystem/Particle" />
///<reference path="particleSystem/ParticleSystem" />
///<reference path="plugin/FirstPersonControl" />
///<reference path="plugin/OrbitControl" />
///<reference path="plugin/Skybox" />
///<reference path="plugin/Skydome" />
///<reference path="prePass/EnvironmentMap" />
///<reference path="prePass/ShadowMap" />
///<reference path="shader/library" />
///<reference path="texture/Texture2D" />
///<reference path="texture/TextureCube" />

View File

@ -32,6 +32,14 @@ declare module qtek {
unbind(gl): boolean;
load(src: string): void;
once(name: "success", handler: Function, context?: any): void;
success(handler: Function, context?: any): void;
once(name: "error", handler: Function, context?: any): void;
error(handler: Function, context?: any): void;
once(name: string, handler: Function, context?: any): void;
}
}
}

View File

@ -35,7 +35,7 @@ declare module qtek {
pixels?: ITextureCubePixels
}
export class Texture2D extends Texture {
export class TextureCube extends Texture {
constructor(option?: ITextureCubeOption);
@ -56,6 +56,14 @@ declare module qtek {
unbind(gl): boolean;
load(imageList: ITextureCubeImageSrc): void;
once(name: "success", handler: Function, context?: any): void;
success(handler: Function, context?: any): void;
once(name: "error", handler: Function, context?: any): void;
error(handler: Function, context?: any): void;
once(name: string, handler: Function, context?: any): void;
}
}
}

535
typescript/webgl.d.ts vendored
View File

@ -1,535 +0,0 @@
// https://github.com/RicoP/webgl.d.ts
interface WebGLContextAttributes {
alpha : bool;
depth : bool;
stencil : bool;
antialias : bool;
premultipliedAlpha : bool;
}
interface WebGLObject {
$__dummyprop__WebGLObject : any;
}
interface WebGLBuffer extends WebGLObject {
$__dummyprop__WebGLBuffer : any;
}
interface WebGLFramebuffer extends WebGLObject {
$__dummyprop__WebGLFramebuffer : any;
}
interface WebGLProgram extends WebGLObject {
$__dummyprop__WebGLProgram : any;
}
interface WebGLRenderbuffer extends WebGLObject {
$__dummyprop__WebGLRenderbuffer : any;
}
interface WebGLShader extends WebGLObject {
$__dummyprop__WebGLShader : any;
}
interface WebGLTexture extends WebGLObject {
$__dummyprop__WebGLTexture : any;
}
interface WebGLUniformLocation {
$__dummyprop__WebGLUniformLocation : any;
}
interface WebGLActiveInfo {
size : number;
type : number;
name : string;
}
interface WebGLRenderingContext {
DEPTH_BUFFER_BIT : number;
STENCIL_BUFFER_BIT : number;
COLOR_BUFFER_BIT : number;
POINTS : number;
LINES : number;
LINE_LOOP : number;
LINE_STRIP : number;
TRIANGLES : number;
TRIANGLE_STRIP : number;
TRIANGLE_FAN : number;
ZERO : number;
ONE : number;
SRC_COLOR : number;
ONE_MINUS_SRC_COLOR : number;
SRC_ALPHA : number;
ONE_MINUS_SRC_ALPHA : number;
DST_ALPHA : number;
ONE_MINUS_DST_ALPHA : number;
DST_COLOR : number;
ONE_MINUS_DST_COLOR : number;
SRC_ALPHA_SATURATE : number;
FUNC_ADD : number;
BLEND_EQUATION : number;
BLEND_EQUATION_RGB : number;
BLEND_EQUATION_ALPHA : number;
FUNC_SUBTRACT : number;
FUNC_REVERSE_SUBTRACT : number;
BLEND_DST_RGB : number;
BLEND_SRC_RGB : number;
BLEND_DST_ALPHA : number;
BLEND_SRC_ALPHA : number;
CONSTANT_COLOR : number;
ONE_MINUS_CONSTANT_COLOR : number;
CONSTANT_ALPHA : number;
ONE_MINUS_CONSTANT_ALPHA : number;
BLEND_COLOR : number;
ARRAY_BUFFER : number;
ELEMENT_ARRAY_BUFFER : number;
ARRAY_BUFFER_BINDING : number;
ELEMENT_ARRAY_BUFFER_BINDING : number;
STREAM_DRAW : number;
STATIC_DRAW : number;
DYNAMIC_DRAW : number;
BUFFER_SIZE : number;
BUFFER_USAGE : number;
CURRENT_VERTEX_ATTRIB : number;
FRONT : number;
BACK : number;
FRONT_AND_BACK : number;
TEXTURE_2D : number;
CULL_FACE : number;
BLEND : number;
DITHER : number;
STENCIL_TEST : number;
DEPTH_TEST : number;
SCISSOR_TEST : number;
POLYGON_OFFSET_FILL : number;
SAMPLE_ALPHA_TO_COVERAGE : number;
SAMPLE_COVERAGE : number;
NO_ERROR : number;
INVALID_ENUM : number;
INVALID_VALUE : number;
INVALID_OPERATION : number;
OUT_OF_MEMORY : number;
CW : number;
CCW : number;
LINE_WIDTH : number;
ALIASED_POINT_SIZE_RANGE : number;
ALIASED_LINE_WIDTH_RANGE : number;
CULL_FACE_MODE : number;
FRONT_FACE : number;
DEPTH_RANGE : number;
DEPTH_WRITEMASK : number;
DEPTH_CLEAR_VALUE : number;
DEPTH_FUNC : number;
STENCIL_CLEAR_VALUE : number;
STENCIL_FUNC : number;
STENCIL_FAIL : number;
STENCIL_PASS_DEPTH_FAIL : number;
STENCIL_PASS_DEPTH_PASS : number;
STENCIL_REF : number;
STENCIL_VALUE_MASK : number;
STENCIL_WRITEMASK : number;
STENCIL_BACK_FUNC : number;
STENCIL_BACK_FAIL : number;
STENCIL_BACK_PASS_DEPTH_FAIL : number;
STENCIL_BACK_PASS_DEPTH_PASS : number;
STENCIL_BACK_REF : number;
STENCIL_BACK_VALUE_MASK : number;
STENCIL_BACK_WRITEMASK : number;
VIEWPORT : number;
SCISSOR_BOX : number;
COLOR_CLEAR_VALUE : number;
COLOR_WRITEMASK : number;
UNPACK_ALIGNMENT : number;
PACK_ALIGNMENT : number;
MAX_TEXTURE_SIZE : number;
MAX_VIEWPORT_DIMS : number;
SUBPIXEL_BITS : number;
RED_BITS : number;
GREEN_BITS : number;
BLUE_BITS : number;
ALPHA_BITS : number;
DEPTH_BITS : number;
STENCIL_BITS : number;
POLYGON_OFFSET_UNITS : number;
POLYGON_OFFSET_FACTOR : number;
TEXTURE_BINDING_2D : number;
SAMPLE_BUFFERS : number;
SAMPLES : number;
SAMPLE_COVERAGE_VALUE : number;
SAMPLE_COVERAGE_INVERT : number;
NUM_COMPRESSED_TEXTURE_FORMATS : number;
COMPRESSED_TEXTURE_FORMATS : number;
DONT_CARE : number;
FASTEST : number;
NICEST : number;
GENERATE_MIPMAP_HINT : number;
BYTE : number;
UNSIGNED_BYTE : number;
SHORT : number;
UNSIGNED_SHORT : number;
INT : number;
UNSIGNED_INT : number;
FLOAT : number;
DEPTH_COMPONENT : number;
ALPHA : number;
RGB : number;
RGBA : number;
LUMINANCE : number;
LUMINANCE_ALPHA : number;
UNSIGNED_SHORT_4_4_4_4 : number;
UNSIGNED_SHORT_5_5_5_1 : number;
UNSIGNED_SHORT_5_6_5 : number;
FRAGMENT_SHADER : number;
VERTEX_SHADER : number;
MAX_VERTEX_ATTRIBS : number;
MAX_VERTEX_UNIFORM_VECTORS : number;
MAX_VARYING_VECTORS : number;
MAX_COMBINED_TEXTURE_IMAGE_UNITS : number;
MAX_VERTEX_TEXTURE_IMAGE_UNITS : number;
MAX_TEXTURE_IMAGE_UNITS : number;
MAX_FRAGMENT_UNIFORM_VECTORS : number;
SHADER_TYPE : number;
DELETE_STATUS : number;
LINK_STATUS : number;
VALIDATE_STATUS : number;
ATTACHED_SHADERS : number;
ACTIVE_UNIFORMS : number;
ACTIVE_UNIFORM_MAX_LENGTH : number;
ACTIVE_ATTRIBUTES : number;
ACTIVE_ATTRIBUTE_MAX_LENGTH : number;
SHADING_LANGUAGE_VERSION : number;
CURRENT_PROGRAM : number;
NEVER : number;
LESS : number;
EQUAL : number;
LEQUAL : number;
GREATER : number;
NOTEQUAL : number;
GEQUAL : number;
ALWAYS : number;
KEEP : number;
REPLACE : number;
INCR : number;
DECR : number;
INVERT : number;
INCR_WRAP : number;
DECR_WRAP : number;
VENDOR : number;
RENDERER : number;
VERSION : number;
NEAREST : number;
LINEAR : number;
NEAREST_MIPMAP_NEAREST : number;
LINEAR_MIPMAP_NEAREST : number;
NEAREST_MIPMAP_LINEAR : number;
LINEAR_MIPMAP_LINEAR : number;
TEXTURE_MAG_FILTER : number;
TEXTURE_MIN_FILTER : number;
TEXTURE_WRAP_S : number;
TEXTURE_WRAP_T : number;
TEXTURE : number;
TEXTURE_CUBE_MAP : number;
TEXTURE_BINDING_CUBE_MAP : number;
TEXTURE_CUBE_MAP_POSITIVE_X : number;
TEXTURE_CUBE_MAP_NEGATIVE_X : number;
TEXTURE_CUBE_MAP_POSITIVE_Y : number;
TEXTURE_CUBE_MAP_NEGATIVE_Y : number;
TEXTURE_CUBE_MAP_POSITIVE_Z : number;
TEXTURE_CUBE_MAP_NEGATIVE_Z : number;
MAX_CUBE_MAP_TEXTURE_SIZE : number;
TEXTURE0 : number;
TEXTURE1 : number;
TEXTURE2 : number;
TEXTURE3 : number;
TEXTURE4 : number;
TEXTURE5 : number;
TEXTURE6 : number;
TEXTURE7 : number;
TEXTURE8 : number;
TEXTURE9 : number;
TEXTURE10 : number;
TEXTURE11 : number;
TEXTURE12 : number;
TEXTURE13 : number;
TEXTURE14 : number;
TEXTURE15 : number;
TEXTURE16 : number;
TEXTURE17 : number;
TEXTURE18 : number;
TEXTURE19 : number;
TEXTURE20 : number;
TEXTURE21 : number;
TEXTURE22 : number;
TEXTURE23 : number;
TEXTURE24 : number;
TEXTURE25 : number;
TEXTURE26 : number;
TEXTURE27 : number;
TEXTURE28 : number;
TEXTURE29 : number;
TEXTURE30 : number;
TEXTURE31 : number;
ACTIVE_TEXTURE : number;
REPEAT : number;
CLAMP_TO_EDGE : number;
MIRRORED_REPEAT : number;
FLOAT_VEC2 : number;
FLOAT_VEC3 : number;
FLOAT_VEC4 : number;
INT_VEC2 : number;
INT_VEC3 : number;
INT_VEC4 : number;
BOOL : number;
BOOL_VEC2 : number;
BOOL_VEC3 : number;
BOOL_VEC4 : number;
FLOAT_MAT2 : number;
FLOAT_MAT3 : number;
FLOAT_MAT4 : number;
SAMPLER_2D : number;
SAMPLER_CUBE : number;
VERTEX_ATTRIB_ARRAY_ENABLED : number;
VERTEX_ATTRIB_ARRAY_SIZE : number;
VERTEX_ATTRIB_ARRAY_STRIDE : number;
VERTEX_ATTRIB_ARRAY_TYPE : number;
VERTEX_ATTRIB_ARRAY_NORMALIZED : number;
VERTEX_ATTRIB_ARRAY_POINTER : number;
VERTEX_ATTRIB_ARRAY_BUFFER_BINDING : number;
COMPILE_STATUS : number;
INFO_LOG_LENGTH : number;
SHADER_SOURCE_LENGTH : number;
LOW_FLOAT : number;
MEDIUM_FLOAT : number;
HIGH_FLOAT : number;
LOW_INT : number;
MEDIUM_INT : number;
HIGH_INT : number;
FRAMEBUFFER : number;
RENDERBUFFER : number;
RGBA4 : number;
RGB5_A1 : number;
RGB565 : number;
DEPTH_COMPONENT16 : number;
STENCIL_INDEX : number;
STENCIL_INDEX8 : number;
DEPTH_STENCIL : number;
RENDERBUFFER_WIDTH : number;
RENDERBUFFER_HEIGHT : number;
RENDERBUFFER_INTERNAL_FORMAT : number;
RENDERBUFFER_RED_SIZE : number;
RENDERBUFFER_GREEN_SIZE : number;
RENDERBUFFER_BLUE_SIZE : number;
RENDERBUFFER_ALPHA_SIZE : number;
RENDERBUFFER_DEPTH_SIZE : number;
RENDERBUFFER_STENCIL_SIZE : number;
FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE : number;
FRAMEBUFFER_ATTACHMENT_OBJECT_NAME : number;
FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL : number;
FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE : number;
COLOR_ATTACHMENT0 : number;
DEPTH_ATTACHMENT : number;
STENCIL_ATTACHMENT : number;
DEPTH_STENCIL_ATTACHMENT : number;
NONE : number;
FRAMEBUFFER_COMPLETE : number;
FRAMEBUFFER_INCOMPLETE_ATTACHMENT : number;
FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT : number;
FRAMEBUFFER_INCOMPLETE_DIMENSIONS : number;
FRAMEBUFFER_UNSUPPORTED : number;
FRAMEBUFFER_BINDING : number;
RENDERBUFFER_BINDING : number;
MAX_RENDERBUFFER_SIZE : number;
INVALID_FRAMEBUFFER_OPERATION : number;
UNPACK_FLIP_Y_WEBGL : number;
UNPACK_PREMULTIPLY_ALPHA_WEBGL : number;
CONTEXT_LOST_WEBGL : number;
UNPACK_COLORSPACE_CONVERSION_WEBGL : number;
BROWSER_DEFAULT_WEBGL : number;
canvas : HTMLCanvasElement;
getContextAttributes() : WebGLContextAttributes;
isContextLost() : bool;
getSupportedExtensions() : string[];
getExtension(name : string) : any;
activeTexture(texture : number) : void;
attachShader(program : WebGLProgram, shader : WebGLShader) : void;
bindAttribLocation(program : WebGLProgram, index : number, name : string) : void;
bindBuffer(target : number, buffer : WebGLBuffer) : void;
bindFramebuffer(target : number, framebuffer : WebGLFramebuffer) : void;
bindRenderbuffer(target : number, renderbuffer : WebGLRenderbuffer) : void;
bindTexture(target : number, texture : WebGLTexture) : void;
blendColor(red : number, green : number, blue : number, alpha : number) : void;
blendEquation(mode : number) : void;
blendEquationSeparate(modeRGB : number, modeAlpha : number) : void;
blendFunc(sfactor : number, dfactor : number) : void;
blendFuncSeparate(srcRGB : number, dstRGB : number, srcAlpha : number, dstAlpha : number) : void;
bufferData(target : number, size : number, usage : number) : void;
bufferData(target : number, data : ArrayBufferView, usage : number) : void;
bufferData(target : number, data : ArrayBuffer, usage : number) : void;
bufferSubData(target : number, offset : number, data : ArrayBufferView) : void;
bufferSubData(target : number, offset : number, data : ArrayBuffer) : void;
checkFramebufferStatus(target : number) : number;
clear(mask : number) : void;
clearColor(red : number, green : number, blue : number, alpha : number) : void;
clearDepth(depth : number) : void;
clearStencil(s : number) : void;
colorMask(red : bool, green : bool, blue : bool, alpha : bool) : void;
compileShader(shader : WebGLShader) : void;
copyTexImage2D(target : number, level : number, internalformat : number, x : number, y : number, width : number, height : number, border : number) : void;
copyTexSubImage2D(target : number, level : number, xoffset : number, yoffset : number, x : number, y : number, width : number, height : number) : void;
createBuffer() : WebGLBuffer;
createFramebuffer() : WebGLFramebuffer;
createProgram() : WebGLProgram;
createRenderbuffer() : WebGLRenderbuffer;
createShader(type : number) : WebGLShader;
createTexture() : WebGLTexture;
cullFace(mode : number) : void;
deleteBuffer(buffer : WebGLBuffer) : void;
deleteFramebuffer(framebuffer : WebGLFramebuffer) : void;
deleteProgram(program : WebGLProgram) : void;
deleteRenderbuffer(renderbuffer : WebGLRenderbuffer) : void;
deleteShader(shader : WebGLShader) : void;
deleteTexture(texture : WebGLTexture) : void;
depthFunc(func : number) : void;
depthMask(flag : bool) : void;
depthRange(zNear : number, zFar : number) : void;
detachShader(program : WebGLProgram, shader : WebGLShader) : void;
disable(cap : number) : void;
disableVertexAttribArray(index : number) : void;
drawArrays(mode : number, first : number, count : number) : void;
drawElements(mode : number, count : number, type : number, offset : number) : void;
enable(cap : number) : void;
enableVertexAttribArray(index : number) : void;
finish() : void;
flush() : void;
framebufferRenderbuffer(target : number, attachment : number, renderbuffertarget : number, renderbuffer : WebGLRenderbuffer) : void;
framebufferTexture2D(target : number, attachment : number, textarget : number, texture : WebGLTexture, level : number) : void;
frontFace(mode : number) : void;
generateMipmap(target : number) : void;
getActiveAttrib(program : WebGLProgram, index : number) : WebGLActiveInfo;
getActiveUniform(program : WebGLProgram, index : number) : WebGLActiveInfo;
getAttachedShaders(program : WebGLProgram) : WebGLShader[];
getAttribLocation(program : WebGLProgram, name : string) : number;
getParameter(pname : number) : any;
getBufferParameter(target : number, pname : number) : any;
getError() : number;
getFramebufferAttachmentParameter(target : number, attachment : number, pname : number) : any;
getProgramParameter(program : WebGLProgram, pname : number) : any;
getProgramInfoLog(program : WebGLProgram) : string;
getRenderbufferParameter(target : number, pname : number) : any;
getShaderParameter(shader : WebGLShader, pname : number) : any;
getShaderInfoLog(shader : WebGLShader) : string;
getShaderSource(shader : WebGLShader) : string;
getTexParameter(target : number, pname : number) : any;
getUniform(program : WebGLProgram, location : WebGLUniformLocation) : any;
getUniformLocation(program : WebGLProgram, name : string) : WebGLUniformLocation;
getVertexAttrib(index : number, pname : number) : any;
getVertexAttribOffset(index : number, pname : number) : number;
hint(target : number, mode : number) : void;
isBuffer(buffer : WebGLBuffer) : bool;
isEnabled(cap : number) : bool;
isFramebuffer(framebuffer : WebGLFramebuffer) : bool;
isProgram(program : WebGLProgram) : bool;
isRenderbuffer(renderbuffer : WebGLRenderbuffer) : bool;
isShader(shader : WebGLShader) : bool;
isTexture(texture : WebGLTexture) : bool;
lineWidth(width : number) : void;
linkProgram(program : WebGLProgram) : void;
pixelStorei(pname : number, param : number) : void;
polygonOffset(factor : number, units : number) : void;
readPixels(x : number, y : number, width : number, height : number, format : number, type : number, pixels : ArrayBufferView) : void;
renderbufferStorage(target : number, internalformat : number, width : number, height : number) : void;
sampleCoverage(value : number, invert : bool) : void;
scissor(x : number, y : number, width : number, height : number) : void;
shaderSource(shader : WebGLShader, source : string) : void;
stencilFunc(func : number, ref : number, mask : number) : void;
stencilFuncSeparate(face : number, func : number, ref : number, mask : number) : void;
stencilMask(mask : number) : void;
stencilMaskSeparate(face : number, mask : number) : void;
stencilOp(fail : number, zfail : number, zpass : number) : void;
stencilOpSeparate(face : number, fail : number, zfail : number, zpass : number) : void;
texImage2D(target : number, level : number, internalformat : number, width : number, height : number, border : number, format : number, type : number, pixels : ArrayBufferView) : void;
texImage2D(target : number, level : number, internalformat : number, format : number, type : number, pixels : ImageData) : void;
texImage2D(target : number, level : number, internalformat : number, format : number, type : number, image : HTMLImageElement) : void;
texImage2D(target : number, level : number, internalformat : number, format : number, type : number, canvas : HTMLCanvasElement) : void;
texImage2D(target : number, level : number, internalformat : number, format : number, type : number, video : HTMLVideoElement) : void;
texParameterf(target : number, pname : number, param : number) : void;
texParameteri(target : number, pname : number, param : number) : void;
texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, width : number, height : number, format : number, type : number, pixels : ArrayBufferView) : void;
texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, pixels : ImageData) : void;
texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, image : HTMLImageElement) : void;
texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, canvas : HTMLCanvasElement) : void;
texSubImage2D(target : number, level : number, xoffset : number, yoffset : number, format : number, type : number, video : HTMLVideoElement) : void;
uniform1f(location : WebGLUniformLocation, x : number) : void;
uniform1fv(location : WebGLUniformLocation, v : Float32Array) : void;
uniform1fv(location : WebGLUniformLocation, v : number[]) : void;
uniform1i(location : WebGLUniformLocation, x : number) : void;
uniform1iv(location : WebGLUniformLocation, v : Int32Array) : void;
uniform1iv(location : WebGLUniformLocation, v : number[]) : void;
uniform2f(location : WebGLUniformLocation, x : number, y : number) : void;
uniform2fv(location : WebGLUniformLocation, v : Float32Array) : void;
uniform2fv(location : WebGLUniformLocation, v : number[]) : void;
uniform2i(location : WebGLUniformLocation, x : number, y : number) : void;
uniform2iv(location : WebGLUniformLocation, v : Int32Array) : void;
uniform2iv(location : WebGLUniformLocation, v : number[]) : void;
uniform3f(location : WebGLUniformLocation, x : number, y : number, z : number) : void;
uniform3fv(location : WebGLUniformLocation, v : Float32Array) : void;
uniform3fv(location : WebGLUniformLocation, v : number[]) : void;
uniform3i(location : WebGLUniformLocation, x : number, y : number, z : number) : void;
uniform3iv(location : WebGLUniformLocation, v : Int32Array) : void;
uniform3iv(location : WebGLUniformLocation, v : number[]) : void;
uniform4f(location : WebGLUniformLocation, x : number, y : number, z : number, w : number) : void;
uniform4fv(location : WebGLUniformLocation, v : Float32Array) : void;
uniform4fv(location : WebGLUniformLocation, v : number[]) : void;
uniform4i(location : WebGLUniformLocation, x : number, y : number, z : number, w : number) : void;
uniform4iv(location : WebGLUniformLocation, v : Int32Array) : void;
uniform4iv(location : WebGLUniformLocation, v : number[]) : void;
uniformMatrix2fv(location : WebGLUniformLocation, transpose : bool, value : Float32Array) : void;
uniformMatrix2fv(location : WebGLUniformLocation, transpose : bool, value : number[]) : void;
uniformMatrix3fv(location : WebGLUniformLocation, transpose : bool, value : Float32Array) : void;
uniformMatrix3fv(location : WebGLUniformLocation, transpose : bool, value : number[]) : void;
uniformMatrix4fv(location : WebGLUniformLocation, transpose : bool, value : Float32Array) : void;
uniformMatrix4fv(location : WebGLUniformLocation, transpose : bool, value : number[]) : void;
useProgram(program : WebGLProgram) : void;
validateProgram(program : WebGLProgram) : void;
vertexAttrib1f(indx : number, x : number) : void;
vertexAttrib1fv(indx : number, values : Float32Array) : void;
vertexAttrib1fv(indx : number, values : number[]) : void;
vertexAttrib2f(indx : number, x : number, y : number) : void;
vertexAttrib2fv(indx : number, values : Float32Array) : void;
vertexAttrib2fv(indx : number, values : number[]) : void;
vertexAttrib3f(indx : number, x : number, y : number, z : number) : void;
vertexAttrib3fv(indx : number, values : Float32Array) : void;
vertexAttrib3fv(indx : number, values : number[]) : void;
vertexAttrib4f(indx : number, x : number, y : number, z : number, w : number) : void;
vertexAttrib4fv(indx : number, values : Float32Array) : void;
vertexAttrib4fv(indx : number, values : number[]) : void;
vertexAttribPointer(indx : number, size : number, type : number, normalized : bool, stride : number, offset : number) : void;
viewport(x : number, y : number, width : number, height : number) : void;
}
interface WebGLContextEvent extends Event {
statusMessage : string;
initWebGLContextEvent(typeArg : string, canBubbleArg : bool, cancelableArg : bool, statusMessageArg : string) : void;
}
//Extend the window object with cross Browser callbacks so TS will not complain
//Also add the (non-standard) Canvas Element parameter for performance improvement
interface WindowAnimationTiming {
requestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
//msRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
mozRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
webkitRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
oRequestAnimationFrame(callback: FrameRequestCallback, canvas ?: HTMLCanvasElement): number;
cancelRequestAnimationFrame(handle: number): void;
//msCancelRequestAnimationFrame(handle: number): void;
mozCancelRequestAnimationFrame(handle: number): void;
webkitCancelRequestAnimationFrame(handle: number): void;
oCancelRequestAnimationFrame(handle: number): void;
}
//To make WebGL work
interface HTMLCanvasElement {
getContext(contextId: string, params : {}): WebGLRenderingContext;
}