diff options
Diffstat (limited to 'src/view/tile.ts')
-rw-r--r-- | src/view/tile.ts | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/src/view/tile.ts b/src/view/tile.ts deleted file mode 100644 index 3dd7231..0000000 --- a/src/view/tile.ts +++ /dev/null @@ -1,74 +0,0 @@ -import Renderer from './renderer/Renderer'; - -export type TileCoords = [number, number, number, number]; - -export class TileViewBuilder { - private static pushTile(buf: number[], coords: TileCoords): void { - const [x1, y1, x2, y2] = coords; - - buf.push(x1); buf.push(y1); - buf.push(x2); buf.push(y1); - buf.push(x1); buf.push(y2); - - buf.push(x1); buf.push(y2); - buf.push(x2); buf.push(y1); - buf.push(x2); buf.push(y2); - } - - private readonly vertexData: number[] = []; - private readonly textureData: number[] = []; - - constructor(private readonly r: Renderer, private readonly texture: WebGLTexture) {} - - public addTile(vertexCoords: TileCoords, texCoords: TileCoords): void { - TileViewBuilder.pushTile(this.vertexData, vertexCoords); - TileViewBuilder.pushTile(this.textureData, texCoords); - } - - public build(): TileView { - return new TileView(this.r, this.texture, this.vertexData, this.textureData); - } -} - -export class TileView { - private readonly vertexCount: number; - private readonly vertexBuffer: WebGLBuffer; - private readonly textureBuffer: WebGLBuffer; - - constructor( - private readonly r: Renderer, - private readonly texture: WebGLTexture, - vertexData: number[], - textureData: number[], - ) { - const gl = r.getContext(); - - this.vertexBuffer = r.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertexData), gl.STATIC_DRAW); - - this.textureBuffer = r.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.textureBuffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(textureData), gl.STATIC_DRAW); - - this.vertexCount = vertexData.length / 2; - } - - public render(): void { - const gl = this.r.getContext(); - - gl.clear(gl.COLOR_BUFFER_BIT); - - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, this.texture); - gl.uniform1i(this.r.getSamplerLoc(), 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.vertexAttribPointer(this.r.getVertexPosLoc(), 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.textureBuffer); - gl.vertexAttribPointer(this.r.getTextureCoordLoc(), 2, gl.FLOAT, false, 0, 0); - - gl.drawArrays(gl.TRIANGLES, 0, this.vertexCount); - } -} |