public void SetShaderProgram(IPlatformShaderProgram program) { if (shaderProgram != program) { shaderProgram = (PlatformShaderProgram)program; shaderProgramDirty = true; } }
private void Create() { var platformShaders = shaders.Select(i => i.GetPlatformShader()).ToArray(); platformProgram = PlatformRenderer.Context.CreateShaderProgram(platformShaders, attribLocations, samplers); uniforms = ReflectUniforms().OrderBy(i => i.SortingKey).ToArray(); paramsToSync = new ShaderParam[uniforms.Length]; boundParams = new BoundShaderParam[uniforms.Length]; }
private void DisposeInternal() { if (platformProgram != null) { var platformProgramCopy = platformProgram; Window.Current.InvokeOnRendering(() => { platformProgramCopy.Dispose(); }); platformProgram = null; } }