Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:html';
- import 'dart:web_gl';
- class ShaderProgramBuilderWithShaders {
- final RenderingContext _gl;
- final Shader _vertexShader, _fragmentShader;
- ShaderProgramBuilderWithShaders(this._gl, this._vertexShader, this._fragmentShader);
- Program build() {
- var program = _gl.createProgram();
- _gl.attachShader(program, _vertexShader);
- _gl.attachShader(program, _fragmentShader);
- _gl.linkProgram(program);
- var success = _gl.getProgramParameter(program, RenderingContext.LINK_STATUS);
- if (success != null)
- return program;
- window.console.error(_gl.getProgramInfoLog(program));
- _gl.deleteProgram(program);
- throw new Exception('Error while creating program');
- }
- }
- class ShaderProgramBuilder {
- final RenderingContext _gl;
- ShaderProgramBuilder(this._gl);
- ShaderProgramBuilderWithVertexShader addVertexShader(String source) {
- var shader = _gl.createShader(RenderingContext.VERTEX_SHADER);
- _gl.shaderSource(shader, source);
- _gl.compileShader(shader);
- var success = _gl.getShaderParameter(shader, RenderingContext.COMPILE_STATUS);
- if (success != null)
- return new ShaderProgramBuilderWithVertexShader(_gl, shader);
- window.console.error(_gl.getShaderInfoLog(shader));
- _gl.deleteShader(shader);
- throw new Exception('Unable to compile vertex shader');
- }
- }
- class ShaderProgramBuilderWithVertexShader {
- final RenderingContext _gl;
- final Shader _vertexShader;
- ShaderProgramBuilderWithVertexShader(this._gl, this._vertexShader);
- ShaderProgramBuilderWithShaders addFragmentShader(String source) {
- var shader = _gl.createShader(RenderingContext.FRAGMENT_SHADER);
- _gl.shaderSource(shader, source);
- _gl.compileShader(shader);
- var success = _gl.getShaderParameter(shader, RenderingContext.COMPILE_STATUS);
- if (success != null)
- return new ShaderProgramBuilderWithShaders(_gl, _vertexShader, shader);
- window.console.error(_gl.getShaderInfoLog(shader));
- _gl.deleteShader(shader);
- throw new Exception('Unable to compile fragment shader');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement