- var
 - Log: TListBox;
 - Shader: TglShaderProgram;
 - procedure ShaderLogEvent(Sender: TObject; const Msg: String);
 - begin
 - Log.Items.Add(TimeToStr(now)+': '+msg);
 - end;
 - procedure CreateShader;
 - var
 - Obj: TglShaderObject;
 - begin
 - try
 - Shader := TglShaderProgram.Create(ShaderLogEvent);
 - Obj := TglShaderObject.Create(GL_VERTEX_SHADER, ShaderLogEvent);
 - Obj.Code := VertexShaderCode;
 - Shader.Add(Obj);
 - Obj := TglShaderObject.Create(GL_FRAGMENT_SHADER, ShaderLogEvent);
 - Obj.Code := FragmentShaderCode;
 - Shader.Add(Obj);
 - Shader.Compile;
 - except
 - on e: Exception do
 - MessageDlg(e.Message, mtError, [mbOK], 0);
 - end;
 - end;
 - procedure Render;
 - begin
 - Shader.Activate;
 - Shader.Uniform4f('color', 1, 1, 1, 0);
 - {renden...}
 - Shader.Deactivate;
 - end;
 - procedure FreeShader;
 - begin
 - Shader.Clear;
 - Shader.Free;
 - end;
 






