I need you to add state to the context which remembers the last value passed into each of these gl calls. If it's the same, don't make the GL call. The reason we need this is because making calls from Dart -> WebKit/WebGL is too expensive to do it unnecessarily. When reset() is called, the cached values should all be set to null.