Dart DocumentationstagexlRenderProgram

RenderProgram abstract class

abstract class RenderProgram {

 RenderProgram();

 void activate(RenderContextWebGL renderContext);
 void flush();

 //-----------------------------------------------------------------------------------------------

 gl.Shader _createShader(gl.RenderingContext renderingContext, String source, int shaderType) {

   var shader = renderingContext.createShader(shaderType);

   renderingContext.shaderSource(shader, source);
   renderingContext.compileShader(shader);

   var vertexShaderStatus = renderingContext.getShaderParameter(shader, gl.COMPILE_STATUS);
   var isContextLost = renderingContext.isContextLost();
   if (vertexShaderStatus == false && isContextLost == false) {
     throw renderingContext.getShaderInfoLog(shader);
   }

   return shader;
 }

 //-----------------------------------------------------------------------------------------------

 gl.Program createProgram(gl.RenderingContext renderingContext,
                          String vertexShaderSource, String fragmentShaderSource) {

   var program = renderingContext.createProgram();
   var vertexShader = _createShader(renderingContext, vertexShaderSource, gl.VERTEX_SHADER);
   var fragmentShader = _createShader(renderingContext, fragmentShaderSource, gl.FRAGMENT_SHADER);

   renderingContext.attachShader(program, vertexShader);
   renderingContext.attachShader(program, fragmentShader);
   renderingContext.linkProgram(program);

   var programStatus = renderingContext.getProgramParameter(program, gl.LINK_STATUS);
   var isContextLost = renderingContext.isContextLost();
   if (programStatus == false && isContextLost == false) {
     throw renderingContext.getProgramInfoLog(program);
   }

   return program;
 }
}

Subclasses

RenderProgramQuad, RenderProgramTriangle

Constructors

new RenderProgram() #

Creates a new Object instance.

Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.

docs inherited from Object
RenderProgram();

Methods

abstract void activate(RenderContextWebGL renderContext) #

Program createProgram(RenderingContext renderingContext, String vertexShaderSource, String fragmentShaderSource) #

gl.Program createProgram(gl.RenderingContext renderingContext,
                        String vertexShaderSource, String fragmentShaderSource) {

 var program = renderingContext.createProgram();
 var vertexShader = _createShader(renderingContext, vertexShaderSource, gl.VERTEX_SHADER);
 var fragmentShader = _createShader(renderingContext, fragmentShaderSource, gl.FRAGMENT_SHADER);

 renderingContext.attachShader(program, vertexShader);
 renderingContext.attachShader(program, fragmentShader);
 renderingContext.linkProgram(program);

 var programStatus = renderingContext.getProgramParameter(program, gl.LINK_STATUS);
 var isContextLost = renderingContext.isContextLost();
 if (programStatus == false && isContextLost == false) {
   throw renderingContext.getProgramInfoLog(program);
 }

 return program;
}

abstract void flush() #