override protected void CreatePrograms() { if (_program == null) { string programName = BlurProgram.GetProgramName(false); _program = (BlurProgram)SparrowSharpApp.GetProgram(programName); if (_program == null) { _program = new BlurProgram(false); SparrowSharpApp.RegisterProgram(programName, _program); } } if (_tintedProgram == null) { string programName = BlurProgram.GetProgramName(true); _tintedProgram = (BlurProgram)SparrowSharpApp.GetProgram(programName); if (_tintedProgram == null) { _tintedProgram = new BlurProgram(true); SparrowSharpApp.RegisterProgram(programName, _tintedProgram); } } VertexPosID = _program.APosition; TexCoordsID = _program.ATexCoords; }
override protected void ActivateWithPass(int pass, Texture texture, Matrix mvpMatrix) { UpdateParamaters(pass, (int)texture.NativeWidth, (int)texture.NativeHeight); bool isColorPass = _enableColorUniform && pass == NumPasses - 1; BlurProgram program = isColorPass ? _tintedProgram : _program; GL.UseProgram(program.Name); Matrix4 mvp = mvpMatrix.ConvertToMatrix4(); GL.UniformMatrix4(program.UMvpMatrix, false, ref mvp); GL.Uniform4(program.UOffsets, 1, _offsets); GL.Uniform4(program.UWeights, 1, _weights); if (isColorPass) { GL.Uniform4(program.UColor, 1, _color); } }