diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2017-09-11 23:24:13 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2017-09-11 23:24:13 +0200 |
commit | a5e69edc5a6f1a95618c04e214d39b397577d796 (patch) | |
tree | 09da345ce4e8973886ddb03031886deb9b8ad191 /src/view/Scene.ts | |
parent | 4a67ba6830950db7d854d3022ed5c77081e106d4 (diff) | |
download | rpgedit-a5e69edc5a6f1a95618c04e214d39b397577d796.tar rpgedit-a5e69edc5a6f1a95618c04e214d39b397577d796.zip |
Code structuring
Also, use a fixed-size canvas for now.
Diffstat (limited to 'src/view/Scene.ts')
-rw-r--r-- | src/view/Scene.ts | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/view/Scene.ts b/src/view/Scene.ts new file mode 100644 index 0000000..0de7546 --- /dev/null +++ b/src/view/Scene.ts @@ -0,0 +1,41 @@ +import Renderer from './Renderer'; + +class Scene { + private triangleVertexPositionBuffer: WebGLBuffer; + private squareVertexPositionBuffer: WebGLBuffer; + + constructor(private r: Renderer) { + this.triangleVertexPositionBuffer = r.createBuffer(); + r.gl.bindBuffer(r.gl.ARRAY_BUFFER, this.triangleVertexPositionBuffer); + const triangleVertices = [ + -1.5, 1.0, + -2.5, -1.0, + -0.5, -1.0, + ]; + r.gl.bufferData(r.gl.ARRAY_BUFFER, new Float32Array(triangleVertices), r.gl.STATIC_DRAW); + + this.squareVertexPositionBuffer = r.createBuffer(); + r.gl.bindBuffer(r.gl.ARRAY_BUFFER, this.squareVertexPositionBuffer); + const squareVertices = [ + 2.5, 1.0, + 0.5, 1.0, + 2.5, -1.0, + 0.5, -1.0, + ]; + r.gl.bufferData(r.gl.ARRAY_BUFFER, new Float32Array(squareVertices), r.gl.STATIC_DRAW); + } + + draw(): void { + this.r.gl.clear(this.r.gl.COLOR_BUFFER_BIT | this.r.gl.DEPTH_BUFFER_BIT); + + this.r.gl.bindBuffer(this.r.gl.ARRAY_BUFFER, this.triangleVertexPositionBuffer); + this.r.gl.vertexAttribPointer(this.r.vertexPosLoc, 2, this.r.gl.FLOAT, false, 0, 0); + this.r.gl.drawArrays(this.r.gl.TRIANGLES, 0, 3); + + this.r.gl.bindBuffer(this.r.gl.ARRAY_BUFFER, this.squareVertexPositionBuffer); + this.r.gl.vertexAttribPointer(this.r.vertexPosLoc, 2, this.r.gl.FLOAT, false, 0, 0); + this.r.gl.drawArrays(this.r.gl.TRIANGLE_STRIP, 0, 4); + } +} + +export default Scene; |