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
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;
}