Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:html';
- import 'dart:web_gl';
- import 'dart:typed_data';
- void main() {
- CanvasElement canvas = querySelector('#game_canvas');
- RenderingContext gl = canvas.getContext('experimental-webgl');
- /*======== Defining and storing the geometry ===========*/
- Float32List vertices = Float32List.fromList([
- -0.5,
- 0.5,
- 0.0,
- -0.5,
- -0.5,
- 0.0,
- 0.5,
- -0.5,
- 0.0,
- ]);
- Uint32List indices = Uint32List.fromList([0, 1, 2]);
- // Create an empty buffer object to store vertex buffer
- var vertex_buffer = gl.createBuffer();
- // Bind appropriate array buffer to it
- gl.bindBuffer(WebGL.ARRAY_BUFFER, vertex_buffer);
- // Pass the vertex data to the buffer
- gl.bufferData(WebGL.ARRAY_BUFFER, vertices, WebGL.STATIC_DRAW);
- // Unbind the buffer
- gl.bindBuffer(WebGL.ARRAY_BUFFER, null);
- // Create an empty buffer object to store Index buffer
- var Index_Buffer = gl.createBuffer();
- // Bind appropriate array buffer to it
- gl.bindBuffer(WebGL.ELEMENT_ARRAY_BUFFER, Index_Buffer);
- // Pass the vertex data to the buffer
- gl.bufferData(
- WebGL.ELEMENT_ARRAY_BUFFER, indices, WebGL.STATIC_DRAW);
- // Unbind the buffer
- gl.bindBuffer(WebGL.ELEMENT_ARRAY_BUFFER, null);
- /*================ Shaders ====================*/
- // Vertex shader source code
- var vertCode = 'attribute vec3 coordinates;' +
- 'void main(void) {' +
- ' gl_Position = vec4(coordinates, 1.0);' +
- '}';
- // Create a vertex shader object
- var vertShader = gl.createShader(WebGL.VERTEX_SHADER);
- // Attach vertex shader source code
- gl.shaderSource(vertShader, vertCode);
- // Compile the vertex shader
- gl.compileShader(vertShader);
- //fragment shader source code
- var fragCode =
- 'void main(void) {' + ' gl_FragColor = vec4(0.0, 0.0, 0.0, 0.1);' + '}';
- // Create fragment shader object
- var fragShader = gl.createShader(WebGL.FRAGMENT_SHADER);
- // Attach fragment shader source code
- gl.shaderSource(fragShader, fragCode);
- // Compile the fragmentt shader
- gl.compileShader(fragShader);
- // Create a shader program object to store
- // the combined shader program
- var shaderProgram = gl.createProgram();
- // Attach a vertex shader
- gl.attachShader(shaderProgram, vertShader);
- // Attach a fragment shader
- gl.attachShader(shaderProgram, fragShader);
- // Link both the programs
- gl.linkProgram(shaderProgram);
- // Use the combined shader program object
- gl.useProgram(shaderProgram);
- /*======= Associating shaders to buffer objects =======*/
- // Bind vertex buffer object
- gl.bindBuffer(WebGL.ARRAY_BUFFER, vertex_buffer);
- // Bind index buffer object
- gl.bindBuffer(WebGL.ELEMENT_ARRAY_BUFFER, Index_Buffer);
- // Get the attribute location
- var coord = gl.getAttribLocation(shaderProgram, "coordinates");
- // Point an attribute to the currently bound VBO
- gl.vertexAttribPointer(coord, 3, WebGL.FLOAT, false, 0, 0);
- // Enable the attribute
- gl.enableVertexAttribArray(coord);
- /*=========Drawing the triangle===========*/
- // Clear the canvas
- gl.clearColor(0.5, 0.5, 0.5, 0.9);
- // Enable the depth test
- gl.enable(WebGL.DEPTH_TEST);
- // Clear the color buffer bit
- gl.clear(WebGL.COLOR_BUFFER_BIT);
- // Set the view port
- gl.viewport(0, 0, canvas.width, canvas.height);
- // Draw the triangle
- gl.drawElements(WebGL.TRIANGLES, indices.length, WebGL.UNSIGNED_SHORT, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement