X-Git-Url: https://git.delphigl.com/?p=LazOpenGLCore.git;a=blobdiff_plain;f=uglcShader.pas;fp=uglcShader.pas;h=bcc2360c2133e1035eca662bb9309e57f487d919;hp=07086431c3f646c277e6f425b5e7fa72c74cb4f4;hb=ff16b4dd097930e3eae26f0d9c29613543e4eff0;hpb=38723f45320eea73e5fef416fc989bcfb9adf21d diff --git a/uglcShader.pas b/uglcShader.pas index 0708643..bcc2360 100644 --- a/uglcShader.pas +++ b/uglcShader.pas @@ -145,6 +145,8 @@ type function GetUniformfv(const aName: String; aP: PGLfloat): Boolean; function GetUniformfi(const aName: String; aP: PGLint): Boolean; + procedure BindAttribLocation(const aName: String; const aAttribIndex: GLint); + function GetAttribLocation(const aName: String): Integer; function HasUniform(const aName: String): Boolean; procedure LoadFromFile(const aFilename: String); @@ -193,10 +195,10 @@ end; //@result: TRUE wenn ohne Fehler kompiliert, sonst FALSE; function TglcShaderObject.GetCompiled: Boolean; var - value: glInt; + value: GLint; begin glGetShaderiv(fShaderObj, GL_COMPILE_STATUS, @value); - result := (value = GL_TRUE); + result := (value = GLint(GL_TRUE)); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -329,7 +331,7 @@ var value: glInt; begin glGetProgramiv(fProgramObj, GL_LINK_STATUS, @value); - result := (value = GL_TRUE); + result := (value = GLint(GL_TRUE)); end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -771,6 +773,19 @@ begin end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +procedure TglcShaderProgram.BindAttribLocation(const aName: String; const aAttribIndex: GLint); +begin + CreateProgramObj; + glBindAttribLocation(fProgramObj, aAttribIndex, PGLchar(aName)); +end; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +function TglcShaderProgram.GetAttribLocation(const aName: String): Integer; +begin + result := glGetAttribLocation(fProgramObj, PGLchar(aName)); +end; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function TglcShaderProgram.HasUniform(const aName: String): Boolean; var pos: GLint; @@ -862,30 +877,6 @@ begin rx.Free; sl.Free; end; - - - { - if Assigned(aStream) then begin - Clear; - fFilename := ''; - reader := TutlStreamReader.Create(aStream); - try - if reader.ReadAnsiString <> GLSL_FILE_HEADER then - raise EglcShader.Create('TglShaderProgram.SaveToStream - incompatible file'); - v := reader.ReadInteger; - - if v >= 100 then begin //version 1.00 - c := reader.ReadInteger; - for i := 0 to c-1 do begin - Add(TglcShaderObject.Create(Cardinal(reader.ReadInteger), fOnLog)); - Last.fCode := reader.ReadAnsiString; - end; - end; - finally - reader.Free; - end; - end else - } end; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////