* added OpenGL ES support
[LazOpenGLCore.git] / uglcTypes.pas
index 95ffb79..b4ed36f 100644 (file)
@@ -12,7 +12,7 @@ unit uglcTypes;
 interface
 
 uses
-  dglOpenGL, sysutils;
+  {$IFNDEF OPENGL_ES}dglOpenGL{$ELSE}dglOpenGLES{$ENDIF}, sysutils;
 
 type
   TglcFace = (
@@ -20,10 +20,12 @@ type
     faBack  = GL_BACK,
     faBoth  = GL_FRONT_AND_BACK);
 
+{$IFNDEF OPENGL_ES}
   TglcPolygonMode = (
     pmPoint = GL_POINT,
     pmLine  = GL_LINE,
     pmFill  = GL_FILL);
+{$ENDIF}
 
   TglcDepthFunc = (
     dfNever         = GL_NEVER,
@@ -37,7 +39,9 @@ type
 
   TglcClearBuffer = (
     cbDepthBuffer   = GL_DEPTH_BUFFER_BIT,
+{$IFNDEF OPENGL_ES}
     cbAccumBuffer   = GL_ACCUM_BUFFER_BIT,
+{$ENDIF}
     cbStencilBuffer = GL_STENCIL_BUFFER_BIT,
     cbColorBuffer   = GL_COLOR_BUFFER_BIT);
 
@@ -54,9 +58,13 @@ type
     mfLinear  = GL_LINEAR);
 
   TglcTextureWrap = (
+{$IFNDEF OPENGL_ES}
     twClamp          = GL_CLAMP,
+{$ENDIF}
     twRepeat         = GL_REPEAT,
+{$IFNDEF OPENGL_ES}
     twClampToBorder  = GL_CLAMP_TO_BORDER,
+{$ENDIF}
     twClampToEdge    = GL_CLAMP_TO_EDGE,
     twMirroredRepeat = GL_MIRRORED_REPEAT);
 
@@ -85,7 +93,9 @@ type
 
   TglcFormat = (
     fmUnknown           = 0,
+{$IFNDEF OPENGL_ES}
     fmColorIndex        = GL_COLOR_INDEX,
+{$ENDIF}
     fmDepthComponent    = GL_DEPTH_COMPONENT,
     fmRed               = GL_RED,
     fmGreen             = GL_GREEN,
@@ -95,8 +105,10 @@ type
     fmRGBA              = GL_RGBA,
     fmLuminance         = GL_LUMINANCE,
     fmLuminanceAlpha    = GL_LUMINANCE_ALPHA,
+{$IFNDEF OPENGL_ES}
     fmBGR               = GL_BGR,
     fmBGRA              = GL_BGRA,
+{$ENDIF}
     fmDepthStencil      = GL_DEPTH_STENCIL);
 
   TglcInternalFormat = (
@@ -107,6 +119,7 @@ type
     ifRGBA                      = GL_RGBA,
     ifLuminance                 = GL_LUMINANCE,
     ifLuminanceAlpha            = GL_LUMINANCE_ALPHA,
+{$IFNDEF OPENGL_ES}
     ifR3G3B2                    = GL_R3_G3_B2,
     ifAlpha4                    = GL_ALPHA4,
     ifAlpha8                    = GL_ALPHA8,
@@ -129,19 +142,25 @@ type
     ifIntensity16               = GL_INTENSITY16,
     ifRGB4                      = GL_RGB4,
     ifRGB5                      = GL_RGB5,
+{$ENDIF}
     ifRGB8                      = GL_RGB8,
+{$IFNDEF OPENGL_ES}
     ifRGB10                     = GL_RGB10,
     ifRGB12                     = GL_RGB12,
     ifRGB16                     = GL_RGB16,
     ifRGBA2                     = GL_RGBA2,
+{$ENDIF}
     ifRGBA4                     = GL_RGBA4,
     ifRGB5A1                    = GL_RGB5_A1,
     ifRGBA8                     = GL_RGBA8,
     ifRGB10A2                   = GL_RGB10_A2,
+{$IFNDEF OPENGL_ES}
     ifRGBA12                    = GL_RGBA12,
     ifRGBA16                    = GL_RGBA16,
+{$ENDIF}
     ifDepthComponent16          = GL_DEPTH_COMPONENT16,
     ifDepthComponent24          = GL_DEPTH_COMPONENT24,
+{$IFNDEF OPENGL_ES}
     ifDepthComponent32          = GL_DEPTH_COMPONENT32,
     ifCompressedAlpha           = GL_COMPRESSED_ALPHA,
     ifCompressedLuminance       = GL_COMPRESSED_LUMINANCE,
@@ -149,6 +168,7 @@ type
     ifCompressedIntensity       = GL_COMPRESSED_INTENSITY,
     ifCompressedRGB             = GL_COMPRESSED_RGB,
     ifCompressedRGBA            = GL_COMPRESSED_RGBA,
+{$ENDIF}
     ifRGBA32f                   = GL_RGBA32F,
     ifRGB32f                    = GL_RGB32F,
     ifRGBA16F                   = GL_RGBA16F,
@@ -156,17 +176,26 @@ type
     ifDepth24Stencil8           = GL_DEPTH24_STENCIL8,
     ifSRGB                      = GL_SRGB,
     ifSRGB8                     = GL_SRGB8,
+{$IFNDEF OPENGL_ES}
     ifSRGBA                     = GL_SRGB_ALPHA,
+{$ENDIF}
     ifSRGBA8                    = GL_SRGB8_ALPHA8,
+{$IFNDEF OPENGL_ES}
     ifSLuminanceAlpha           = GL_SLUMINANCE_ALPHA,
     ifSLuminance8Alpha8         = GL_SLUMINANCE8_ALPHA8,
     ifSLuminance                = GL_SLUMINANCE,
     ifSLuminance8               = GL_SLUMINANCE8,
+{$ENDIF}
     ifDepth32fStencil8          = GL_DEPTH32F_STENCIL8,
+{$IFNDEF OPENGL_ES}
     ifStencil1                  = GL_STENCIL_INDEX1,
     ifStencil4                  = GL_STENCIL_INDEX4,
-    ifStencil8                  = GL_STENCIL_INDEX8,
-    ifStencil16                 = GL_STENCIL_INDEX16);
+{$ENDIF}
+    ifStencil8                  = GL_STENCIL_INDEX8
+{$IFNDEF OPENGL_ES}
+    , ifStencil16                 = GL_STENCIL_INDEX16
+{$ENDIF}
+  );
 
   TglcAttachment = (
     atDepthStencil = GL_DEPTH_STENCIL_ATTACHMENT,
@@ -191,10 +220,13 @@ type
 
   TglcShaderType = (
     stFragment        = GL_FRAGMENT_SHADER,
-    stVertex          = GL_VERTEX_SHADER,
-    stGeometry        = GL_GEOMETRY_SHADER,
-    stTessEvaluation  = GL_TESS_EVALUATION_SHADER,
-    stTessControl     = GL_TESS_CONTROL_SHADER);
+    stVertex          = GL_VERTEX_SHADER
+{$IFNDEF OPENGL_ES}
+    , stGeometry        = GL_GEOMETRY_SHADER
+    , stTessEvaluation  = GL_TESS_EVALUATION_SHADER
+    , stTessControl     = GL_TESS_CONTROL_SHADER
+{$ENDIF}
+  );
 
   TglcBufferTarget = (
     btArrayBuffer        = GL_ARRAY_BUFFER,
@@ -226,11 +258,13 @@ type
   end;
 
 procedure glcRenderFace(const aValue: TglcFace); inline;
-procedure glcPolygonMode(const aFace: TglcFace; const aValue: TglcPolygonMode); inline;
 procedure glcDepthFunc(const aValue: TglcDepthFunc); inline;
 procedure glcBlendFunc(const aSource, aDest: TglcBlendFactor); inline; overload;
 procedure glcBlendFunc(const aMode: TglcBlendMode); inline; overload;
 procedure glcCheckAndRaiseError;
+{$IFNDEF OPENGL_ES}
+procedure glcPolygonMode(const aFace: TglcFace; const aValue: TglcPolygonMode); inline;
+{$ENDIF}
 
 implementation
 
@@ -265,12 +299,6 @@ begin
 end;
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-procedure glcPolygonMode(const aFace: TglcFace; const aValue: TglcPolygonMode);
-begin
-  glPolygonMode(GLenum(aFace), GLenum(aValue));
-end;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 procedure glcDepthFunc(const aValue: TglcDepthFunc);
 begin
   glDepthFunc(GLenum(aValue));
@@ -298,20 +326,36 @@ begin
     raise EOpenGL.Create(e);
 end;
 
+{$IFNDEF OPENGL_ES}
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+procedure glcPolygonMode(const aFace: TglcFace; const aValue: TglcPolygonMode);
+begin
+  glPolygonMode(GLenum(aFace), GLenum(aValue));
+end;
+{$ENDIF}
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //EOpenGL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 constructor EOpenGL.Create(const aErrorCode: GLenum);
 begin
   fErrorCode := aErrorCode;
+{$IFNDEF OPENGL_ES}
   inherited Create(gluErrorString(fErrorCode));
+{$ELSE}
+  inherited Create('OpenGL Error: ' + IntToHex(fErrorCode, 8));
+{$ENDIF}
 end;
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 constructor EOpenGL.Create(const aMsg: String; const aErrorCode: GLenum);
 begin
   fErrorCode := aErrorCode;
+{$IFNDEF OPENGL_ES}
   inherited Create(aMsg + ': ' + gluErrorString(fErrorCode))
+{$ELSE}
+  inherited Create(aMsg + ': ' + IntToHex(fErrorCode, 8));
+{$ENDIF}
 end;
 
 end.