summaryrefslogtreecommitdiffstats
path: root/src/view/Scene.ts
blob: 0de7546a06d8584c99e0b5c0eaf35ea0189df94c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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;