* ArrayBuffer: fixed some small bugs for OpenGL ES
[LazOpenGLCore.git] / uglcArrayBuffer.pas
index 87814e6..5d6f8de 100644 (file)
@@ -137,9 +137,10 @@ begin
 {$IFNDEF OPENGL_ES}
   result := glMapBuffer(GLenum(fTarget), GLenum(aAccess));
 {$ELSE}
-  if not GL_OES_mapbuffer then
+  if GL_OES_mapbuffer then
+    result := glMapBufferOES(GLenum(fTarget), GLenum(aAccess))
+  else
     raise EglcArrayBuffer.Create('map buffer is not supported by video card');
-  result := glMapBufferOES(GLenum(fTarget), GLenum(aAccess));
 {$ENDIF}
   glcCheckAndRaiseError;
 end;
@@ -152,9 +153,12 @@ begin
     raise EglcArrayBuffer.Create('map buffer range is not supported by video card');
   result := glMapBufferRange(GLenum(fTarget), aOffset, aSize, GLenum(aAccess));
   {$ELSE}
-  if not GL_VERSION_3_0 then
+  if GL_VERSION_3_0 then
+    result := glMapBufferRange(GLenum(fTarget), aOffset, aSize, GLenum(aAccess))
+  else if GL_EXT_map_buffer_range then
+    result := glMapBufferRangeEXT(GLenum(fTarget), aOffset, aSize, GLenum(aAccess))
+  else
     raise EglcArrayBuffer.Create('map buffer range is not supported by video card');
-  result := glMapBufferRange(GLenum(fTarget), aOffset, aSize, GLenum(aAccess));
   {$ENDIF}
 end;
 
@@ -164,9 +168,12 @@ begin
 {$IFNDEF OPENGL_ES}
   glUnmapBuffer(GLenum(fTarget));
 {$ELSE}
-  if not (GL_OES_mapbuffer or GL_VERSION_3_0) then
+  if GL_VERSION_3_0 then
+    glUnmapBuffer(GLenum(fTarget))
+  else if GL_OES_mapbuffer then
+    glUnmapBufferOES(GLenum(fTarget))
+  else
     raise EglcArrayBuffer.Create('unmap buffer is not supported by video card');
-  glUnmapBuffer(GLenum(fTarget));
 {$ENDIF}
 end;
 
@@ -192,6 +199,7 @@ begin
   if not GL_VERSION_2_0 then
     raise EglcArrayBuffer.Create('Create - VertexBuffer: not supported');
 {$ENDIF}
+  glGetError();
   inherited Create;
   glGenBuffers(1, @fID);
   fDataCount   := 0;