From 80932aac52da763082a4d9cec0d4924724208129 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Thu, 18 Jun 2015 01:42:10 -0400 Subject: [PATCH] ecere/gfx/drivers/OpenGL: GLAB fixes to build on Windows --- ecere/src/gfx/drivers/OpenGLDisplayDriver.ec | 37 +++++++++++++--------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec index 59a24df..75039a7 100644 --- a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec +++ b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec @@ -1348,12 +1348,9 @@ public struct GLAB if(this != null) { if(!buffer) - glGenBuffers(1, &buffer); + GLGenBuffers(1, this); if(curArrayBuffer != buffer) - { - glBindBuffer(GL_ARRAY_BUFFER, buffer); - curArrayBuffer = buffer; - } + GLBindBuffer(GL_ARRAY_BUFFER, buffer); glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW); //GL_DYNAMIC_DRAW); } } @@ -1362,7 +1359,7 @@ public struct GLAB { if(this != null) { - glDeleteBuffers(1, &buffer); + GLDeleteBuffers(1, this); buffer = 0; } } @@ -1370,10 +1367,7 @@ public struct GLAB void use(GLBufferContents contents, int n, int type, uint stride, void * pointer) { if(curArrayBuffer != ((this != null) ? buffer : 0)) - { - glBindBuffer(GL_ARRAY_BUFFER, ((this != null) ? buffer : 0)); - curArrayBuffer = ((this != null) ? buffer : 0); - } + GLBindBuffer(GL_ARRAY_BUFFER, ((this != null) ? buffer : 0)); switch(contents) { case normal: glNormalPointer(type, stride, pointer); break; @@ -1397,13 +1391,10 @@ public struct GLEAB if(this != null) { if(!buffer) - glGenBuffers(1, &buffer); + GLGenBuffers(1, (GLAB *)this); if(curElementBuffer != buffer) - { - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer); - curElementBuffer = buffer; - } + GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer); glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, data, GL_STATIC_DRAW); //GL_DYNAMIC_DRAW); } } @@ -1412,7 +1403,7 @@ public struct GLEAB { if(this != null) { - glDeleteBuffers(1, &buffer); + GLDeleteBuffers(1, (GLAB *)this); buffer = 0; } } @@ -1420,10 +1411,7 @@ public struct GLEAB void draw(int primType, int count, int type, void * indices) { if(curElementBuffer != ((this != null) ? buffer : 0)) - { - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ((this != null) ? buffer : 0)); - curElementBuffer = ((this != null) ? buffer : 0); - } + GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ((this != null) ? buffer : 0)); glDrawElements(primType, count, type, indices); } }; @@ -1442,6 +1430,15 @@ public void GLGenBuffers(int count, GLAB * buffers) public void GLDeleteBuffers(int count, GLAB * buffers) { + int i; + for(i = 0; i < count; i++) + { + uint buffer = buffers[i].buffer; + if(buffer == curArrayBuffer) + GLBindBuffer(GL_ARRAY_BUFFER_ARB, 0); + else if(buffer == curElementBuffer) + GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); + } #if defined(__ANDROID__) || defined(__ODROID__) glDeleteBuffers(count, (GLuint *)buffers); #else -- 1.8.3.1