- // Programm Objekt erstellen
- ProgramObject := glCreateProgram;
- //Vertex und Fragmentshader erstellen
- VertexShaderObject := glCreateShader(GL_VERTEX_SHADER);
- FragmentShaderObject := glCreateShader(GL_FRAGMENT_SHADER);
- //Vertex und Fragment Code einladen
- sl_ver := TStringList.Create;
- sl_frag := TStringList.Create;
- sl_ver.LoadFromFile( ExtractFilePath(Application.Exename) + 'shader'+ s_name + '.ver' );
- sl_frag.LoadFromFile( ExtractFilePath(Application.Exename) + 'shader'+ s_name + '.frag' );
- vertex_code := sl_ver.Text;
- vertex_len := length(vertex_code);
- fragment_code := sl_frag.Text;
- fragment_len := length(fragment_code);
- sl_ver.Destroy;
- sl_frag.Destroy;
- //Quellcode einladen
- glShaderSource(VertexShaderObject, 1, @vertex_code, @vertex_len);
- glShaderSource(FragmentShaderObject, 1, @fragment_code, @fragment_len);
- //Code compilieren
- glCompileShader(VertexShaderObject);
- glCompileShader(FragmentShaderObject);
- //Shader an das Programm Objekt anhängen
- glAttachShader(ProgramObject, VertexShaderObject);
- glAttachShader(ProgramObject, FragmentShaderObject);
- //Ressourcen freigeben
- glDeleteShader(VertexShaderObject);
- glDeleteShader(FragmentShaderObject);
- //Shader linken
- glLinkProgram(ProgramObject);