interface\r
\r
uses\r
- Classes, SysUtils, fgl, dglOpenGL, uglcTypes, ugluMatrix, uglcContext;\r
+ Classes, SysUtils, fgl, {$IFNDEF OPENGL_ES}dglOpenGl{$ELSE}dglOpenGLES{$ENDIF}, uglcTypes, ugluMatrix;\r
\r
type\r
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r
TglcShaderObject = class(TObject)\r
private\r
fAtachedTo: TglcShaderProgram;\r
- fShaderObj: GLHandle;\r
+ fShaderObj: GLuint;\r
fShaderType: TglcShaderType;\r
fCode: String;\r
fOnLog: TglcShaderLogEvent;\r
fAttachedTo: TglcShaderProgram;\r
\r
- function GetInfoLog(aObj: GLHandle): String;\r
+ function GetInfoLog(aObj: GLuint): String;\r
function GetCompiled: Boolean;\r
procedure Log(const aMsg: String);\r
procedure CreateShaderObj;\r
procedure AttachTo(const aProgram: TglcShaderProgram);\r
public\r
- property ShaderObj : GLHandle read fShaderObj;\r
+ property ShaderObj: GLuint read fShaderObj;\r
property ShaderType: TglcShaderType read fShaderType;\r
property Compiled: Boolean read GetCompiled;\r
property AtachedTo: TglcShaderProgram read fAtachedTo;\r
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r
TglcShaderProgram = class(TglcShaderObjectList)\r
private\r
- fProgramObj: GLHandle;\r
+ fProgramObj: GLuint;\r
fOnLog: TglcShaderLogEvent;\r
fFilename: String;\r
\r
function GetUniformLocation(const aName: String; out aPos: glInt): Boolean;\r
- function GetInfoLog(Obj: GLHandle): String;\r
+ function GetInfoLog(Obj: GLuint): String;\r
function GetCompiled: Boolean;\r
function GetLinked: Boolean;\r
\r
procedure Log(const msg: String);\r
procedure AttachShaderObj(const aShaderObj: TglcShaderObject);\r
public\r
- property ProgramObj: glHandle read fProgramObj;\r
+ property ProgramObj: GLuint read fProgramObj;\r
property Filename: String read fFilename;\r
property Compiled: Boolean read GetCompiled;\r
property Linked: Boolean read GetLinked;\r
//ließt das Log eines OpenGL-Objekts aus\r
//@Obj: Handle des Objekts, dessen Log ausgelesen werden soll;\r
//@result: Log des Objekts;\r
-function TglcShaderObject.GetInfoLog(aObj: GLHandle): String;\r
+function TglcShaderObject.GetInfoLog(aObj: GLuint): String;\r
var\r
Msg: PChar;\r
bLen: GLint;\r
//ließt das Log eines OpenGL-Objekts aus\r
//@Obj: Handle des Objekts, dessen Log ausgelesen werden soll;\r
//@result: Log des Objekts;\r
-function TglcShaderProgram.GetInfoLog(Obj: GLHandle): String;\r
+function TglcShaderProgram.GetInfoLog(Obj: GLuint): String;\r
var\r
Msg: PChar;\r
bLen: GLint;\r
procedure TglcShaderProgram.CreateProgramObj;\r
begin\r
if (fProgramObj = 0) then begin\r
- if GL_LibHandle = nil then\r
- raise EglcShader.Create('TglShaderProgram.Create - OpenGL not initialized');\r
-\r
- if not TglcContext.IsAnyContextActive then\r
- raise EglcShader.Create('TglShaderProgram.Create - no valid render context');\r
-\r
fProgramObj := glCreateProgram();\r
Log('shader program created: #'+IntToHex(fProgramObj, 4));\r
end;\r
result := TglcShaderType.stVertex\r
else if (aStr = 'GL_FRAGMENT_SHADER') then\r
result := TglcShaderType.stFragment\r
+{$IFNDEF OPENGL_ES}\r
else if (aStr = 'GL_GEOMETRY_SHADER') then\r
result := TglcShaderType.stGeometry\r
else if (aStr = 'GL_TESS_CONTROL_SHADER') then\r
result := TglcShaderType.stTessControl\r
else if (aStr = 'GL_TESS_EVALUATION_SHADER') then\r
result := TglcShaderType.stTessEvaluation\r
+{$ENDIF}\r
else\r
raise Exception.Create('invalid shader type: ' + aStr);\r
end;\r
case aShaderType of\r
TglcShaderType.stVertex: result := 'GL_VERTEX_SHADER';\r
TglcShaderType.stFragment: result := 'GL_FRAGMENT_SHADER';\r
+{$IFNDEF OPENGL_ES}\r
TglcShaderType.stGeometry: result := 'GL_GEOMETRY_SHADER';\r
TglcShaderType.stTessControl: result := 'GL_TESS_CONTROL_SHADER';\r
TglcShaderType.stTessEvaluation: result := 'GL_TESS_EVALUATION_SHADER';\r
+{$ENDIF}\r
else\r
result := 'UNKNOWN';\r
end;\r
end;\r
\r
end.\r
-\r
\ No newline at end of file
+\r