- 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;