X-Git-Url: https://git.delphigl.com/?p=LazOpenGLCore.git;a=blobdiff_plain;f=uglcArrayBuffer.pas;fp=uglcArrayBuffer.pas;h=5d6f8de53818bcea6a37b748cf632b1917da3613;hp=87814e6b94a5de7a6f614a9d69f036cf0050c91a;hb=ff16b4dd097930e3eae26f0d9c29613543e4eff0;hpb=38723f45320eea73e5fef416fc989bcfb9adf21d diff --git a/uglcArrayBuffer.pas b/uglcArrayBuffer.pas index 87814e6..5d6f8de 100644 --- a/uglcArrayBuffer.pas +++ b/uglcArrayBuffer.pas @@ -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;