Advertisement
Guest User

Untitled

a guest
Aug 11th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.10 KB | None | 0 0
  1. import 'dart:html';
  2. import 'dart:web_gl';
  3.  
  4. class ShaderProgramBuilderWithShaders {
  5.   final RenderingContext _gl;
  6.   final Shader _vertexShader, _fragmentShader;
  7.  
  8.   ShaderProgramBuilderWithShaders(this._gl, this._vertexShader, this._fragmentShader);
  9.  
  10.   Program build() {
  11.     var program = _gl.createProgram();
  12.  
  13.     _gl.attachShader(program, _vertexShader);
  14.     _gl.attachShader(program, _fragmentShader);
  15.     _gl.linkProgram(program);
  16.  
  17.     var success = _gl.getProgramParameter(program, RenderingContext.LINK_STATUS);
  18.     if (success != null)
  19.       return program;
  20.  
  21.     window.console.error(_gl.getProgramInfoLog(program));
  22.     _gl.deleteProgram(program);
  23.     throw new Exception('Error while creating program');
  24.   }
  25. }
  26.  
  27. class ShaderProgramBuilder {
  28.   final RenderingContext _gl;
  29.  
  30.   ShaderProgramBuilder(this._gl);
  31.  
  32.   ShaderProgramBuilderWithVertexShader addVertexShader(String source) {
  33.     var shader = _gl.createShader(RenderingContext.VERTEX_SHADER);
  34.  
  35.     _gl.shaderSource(shader, source);
  36.     _gl.compileShader(shader);
  37.  
  38.     var success = _gl.getShaderParameter(shader, RenderingContext.COMPILE_STATUS);
  39.     if (success != null)
  40.       return new ShaderProgramBuilderWithVertexShader(_gl, shader);
  41.  
  42.     window.console.error(_gl.getShaderInfoLog(shader));
  43.     _gl.deleteShader(shader);
  44.     throw new Exception('Unable to compile vertex shader');
  45.   }
  46. }
  47.  
  48. class ShaderProgramBuilderWithVertexShader {
  49.   final RenderingContext _gl;
  50.   final Shader _vertexShader;
  51.  
  52.   ShaderProgramBuilderWithVertexShader(this._gl, this._vertexShader);
  53.  
  54.   ShaderProgramBuilderWithShaders addFragmentShader(String source) {
  55.     var shader = _gl.createShader(RenderingContext.FRAGMENT_SHADER);
  56.  
  57.     _gl.shaderSource(shader, source);
  58.     _gl.compileShader(shader);
  59.  
  60.     var success = _gl.getShaderParameter(shader, RenderingContext.COMPILE_STATUS);
  61.     if (success != null)
  62.       return new ShaderProgramBuilderWithShaders(_gl, _vertexShader, shader);
  63.  
  64.     window.console.error(_gl.getShaderInfoLog(shader));
  65.     _gl.deleteShader(shader);
  66.     throw new Exception('Unable to compile fragment shader');
  67.   }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement