import Texture from './BaseTexture'
import {FORMATS, TYPES} from './../const';
export default class FrameBuffer
{
constructor(width, height)
{
this.width = width || 100;
this.height = height || 100;
this.stencil = false;
this.depth = false;
this.dirtyId = 0;
this.dirtyFormat = 0;
this.dirtySize = 0;
this.depthTexture = null;
this.colorTextures = [];
this.glFrameBuffers = {};
}
get colorTexture()
{
return this.colorTextures[0];
}
addColorTexture(index, texture)
{
// TODO add some validation to the texture - same width / height etc?
this.colorTextures[index || 0] = texture || new Texture(null, 0, 1, this.width, this.height);// || new Texture();
this.dirtyId++;
this.dirtyFormat++;
return this;
}
addDepthTexture(texture)
{
this.depthTexture = texture || new Texture(null, 0, 1, this.width, this.height, FORMATS.DEPTH_COMPONENT, TYPES.UNSIGNED_SHORT);//UNSIGNED_SHORT;
this.dirtyId++;
this.dirtyFormat++;
return this;
}
enableDepth()
{
this.depth = true;
this.dirtyId++;
this.dirtyFormat++;
return this;
}
enableStencil()
{
this.stencil = true;
this.dirtyId++;
this.dirtyFormat++;
return this;
}
resize(width, height)
{
if(width === this.width && height === this.height)return;
this.width = width;
this.height = height;
this.dirtyId++;
this.dirtySize++;
for (var i = 0; i < this.colorTextures.length; i++) {
this.colorTextures[i].resize(width, height);
}
if(this.depthTexture)
{
this.depthTexture.resize(width, height)
}
}
}