func (ctx *FrameContext) DrawContext(shader loader.Shader) DrawContext { r := DrawContext{ GL: ctx.GL, Camera: ctx.Camera, Shader: shader, } if ctx.activeShader != shader { shader.Use() ctx.activeShader = shader } if ctx.shaderCache == nil { ctx.shaderCache = map[loader.Shader]struct{}{shader: struct{}{}} ctx.bindShader(shader) } else if _, ok := ctx.shaderCache[shader]; !ok { ctx.bindShader(shader) } return r }