Browse Source

Revise spritebatch locking (binding now) (issue #231)

Bart van Strien 14 years ago
parent
commit
bd158faaaa

+ 2 - 0
src/modules/graphics/opengl/SpriteBatch.cpp

@@ -161,11 +161,13 @@ namespace opengl
 
 
 		glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
 		glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
 		lockp = (vertex *)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);
 		lockp = (vertex *)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);
+		glBindBuffer(GL_ARRAY_BUFFER, 0);
 		return lockp;
 		return lockp;
 	}
 	}
 
 
 	void SpriteBatch::unlock()
 	void SpriteBatch::unlock()
 	{
 	{
+		glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
 		glUnmapBuffer(GL_ARRAY_BUFFER);
 		glUnmapBuffer(GL_ARRAY_BUFFER);
 		lockp = 0;
 		lockp = 0;
 		glBindBuffer(GL_ARRAY_BUFFER, 0);
 		glBindBuffer(GL_ARRAY_BUFFER, 0);

+ 6 - 6
src/modules/graphics/opengl/wrap_SpriteBatch.cpp

@@ -67,14 +67,14 @@ namespace opengl
 		return 0;
 		return 0;
 	}
 	}
 
 
-	int w_SpriteBatch_lock(lua_State * L)
+	int w_SpriteBatch_bind(lua_State * L)
 	{
 	{
 		SpriteBatch * t = luax_checkspritebatch(L, 1);
 		SpriteBatch * t = luax_checkspritebatch(L, 1);
-		lua_pushlightuserdata(L, t->lock());
-		return 1;
+		t->lock();
+		return 0;
 	}
 	}
 
 
-	int w_SpriteBatch_unlock(lua_State * L)
+	int w_SpriteBatch_unbind(lua_State * L)
 	{
 	{
 		SpriteBatch * t = luax_checkspritebatch(L, 1);
 		SpriteBatch * t = luax_checkspritebatch(L, 1);
 		t->unlock();
 		t->unlock();
@@ -93,8 +93,8 @@ namespace opengl
 		{ "add", w_SpriteBatch_add },
 		{ "add", w_SpriteBatch_add },
 		{ "addq", w_SpriteBatch_addq },
 		{ "addq", w_SpriteBatch_addq },
 		{ "clear", w_SpriteBatch_clear },
 		{ "clear", w_SpriteBatch_clear },
-		{ "lock", w_SpriteBatch_lock },
-		{ "unlock", w_SpriteBatch_unlock },
+		{ "bind", w_SpriteBatch_bind },
+		{ "unbind", w_SpriteBatch_unbind },
 		{ "setImage", w_SpriteBatch_setImage },
 		{ "setImage", w_SpriteBatch_setImage },
 		{ 0, 0 }
 		{ 0, 0 }
 	};
 	};