mirror of
https://github.com/love2d/love.git
synced 2026-08-15 15:51:12 +02:00
Merge branch '12.0-development' into metal
This commit is contained in:
@@ -1325,7 +1325,7 @@ int w_newSpriteBatch(lua_State *L)
|
||||
|
||||
Texture *texture = luax_checktexture(L, 1);
|
||||
int size = (int) luaL_optinteger(L, 2, 1000);
|
||||
BufferUsage usage = BUFFERUSAGE_DYNAMIC;
|
||||
BufferDataUsage usage = BUFFERDATAUSAGE_DYNAMIC;
|
||||
if (lua_gettop(L) > 2)
|
||||
{
|
||||
const char *usagestr = luaL_checkstring(L, 3);
|
||||
@@ -1488,7 +1488,7 @@ int w_validateShader(lua_State *L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static BufferUsage luax_optbufferusage(lua_State *L, int idx, BufferUsage def)
|
||||
static BufferDataUsage luax_optdatausage(lua_State *L, int idx, BufferDataUsage def)
|
||||
{
|
||||
const char *usagestr = lua_isnoneornil(L, idx) ? nullptr : luaL_checkstring(L, idx);
|
||||
|
||||
@@ -1506,7 +1506,7 @@ static void luax_optbuffersettings(lua_State *L, int idx, Buffer::Settings &sett
|
||||
luaL_checktype(L, idx, LUA_TTABLE);
|
||||
|
||||
lua_getfield(L, idx, "usage");
|
||||
settings.usage = luax_optbufferusage(L, -1, settings.usage);
|
||||
settings.dataUsage = luax_optdatausage(L, -1, settings.dataUsage);
|
||||
lua_pop(L, 1);
|
||||
}
|
||||
|
||||
@@ -1664,18 +1664,18 @@ static Buffer *luax_newbuffer(lua_State *L, int idx, Buffer::Settings settings,
|
||||
|
||||
int w_newBuffer(lua_State *L)
|
||||
{
|
||||
Buffer::Settings settings(0, BUFFERUSAGE_DYNAMIC);
|
||||
Buffer::Settings settings(0, BUFFERDATAUSAGE_DYNAMIC);
|
||||
|
||||
luaL_checktype(L, 3, LUA_TTABLE);
|
||||
|
||||
for (int i = 0; i < BUFFERTYPE_MAX_ENUM; i++)
|
||||
for (int i = 0; i < BUFFERUSAGE_MAX_ENUM; i++)
|
||||
{
|
||||
BufferType buffertype = (BufferType) i;
|
||||
BufferUsage bufferusage = (BufferUsage) i;
|
||||
const char *tname = nullptr;
|
||||
if (!getConstant(buffertype, tname))
|
||||
if (!getConstant(bufferusage, tname))
|
||||
continue;
|
||||
if (luax_boolflag(L, 3, tname, false))
|
||||
settings.typeFlags = (Buffer::TypeFlags)(settings.typeFlags | (1u << i));
|
||||
settings.usageFlags = (BufferUsageFlags)(settings.usageFlags | (1u << i));
|
||||
}
|
||||
|
||||
luax_optbuffersettings(L, 3, settings);
|
||||
@@ -1692,7 +1692,7 @@ int w_newBuffer(lua_State *L)
|
||||
|
||||
int w_newVertexBuffer(lua_State *L)
|
||||
{
|
||||
Buffer::Settings settings(Buffer::TYPEFLAG_VERTEX, BUFFERUSAGE_DYNAMIC);
|
||||
Buffer::Settings settings(BUFFERUSAGEFLAG_VERTEX, BUFFERDATAUSAGE_DYNAMIC);
|
||||
luax_optbuffersettings(L, 3, settings);
|
||||
|
||||
std::vector<Buffer::DataDeclaration> format;
|
||||
@@ -1707,7 +1707,7 @@ int w_newVertexBuffer(lua_State *L)
|
||||
|
||||
int w_newIndexBuffer(lua_State *L)
|
||||
{
|
||||
Buffer::Settings settings(Buffer::TYPEFLAG_INDEX, BUFFERUSAGE_DYNAMIC);
|
||||
Buffer::Settings settings(BUFFERUSAGEFLAG_INDEX, BUFFERDATAUSAGE_DYNAMIC);
|
||||
luax_optbuffersettings(L, 3, settings);
|
||||
|
||||
size_t arraylength = 0;
|
||||
@@ -1799,7 +1799,7 @@ static Mesh *newStandardMesh(lua_State *L)
|
||||
Mesh *t = nullptr;
|
||||
|
||||
PrimitiveType drawmode = luax_optmeshdrawmode(L, 2, PRIMITIVE_TRIANGLE_FAN);
|
||||
BufferUsage usage = luax_optbufferusage(L, 3, BUFFERUSAGE_DYNAMIC);
|
||||
BufferDataUsage usage = luax_optdatausage(L, 3, BUFFERDATAUSAGE_DYNAMIC);
|
||||
|
||||
std::vector<Buffer::DataDeclaration> format = Mesh::getDefaultVertexFormat();
|
||||
|
||||
@@ -1861,7 +1861,7 @@ static Mesh *newCustomMesh(lua_State *L)
|
||||
std::vector<Buffer::DataDeclaration> vertexformat;
|
||||
|
||||
PrimitiveType drawmode = luax_optmeshdrawmode(L, 3, PRIMITIVE_TRIANGLE_FAN);
|
||||
BufferUsage usage = luax_optbufferusage(L, 4, BUFFERUSAGE_DYNAMIC);
|
||||
BufferDataUsage usage = luax_optdatausage(L, 4, BUFFERDATAUSAGE_DYNAMIC);
|
||||
|
||||
lua_rawgeti(L, 1, 1);
|
||||
if (!lua_istable(L, -1))
|
||||
@@ -3103,7 +3103,7 @@ int w_rectangle(lua_State *L)
|
||||
|
||||
if (lua_isnoneornil(L, 6))
|
||||
{
|
||||
instance()->rectangle(mode, x, y, w, h);
|
||||
luax_catchexcept(L, [&](){ instance()->rectangle(mode, x, y, w, h); });
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3255,6 +3255,27 @@ int w_polygon(lua_State *L)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w_copyBuffer(lua_State *L)
|
||||
{
|
||||
Buffer *source = luax_checkbuffer(L, 1);
|
||||
Buffer *dest = luax_checkbuffer(L, 2);
|
||||
|
||||
ptrdiff_t sourceoffset = luaL_optinteger(L, 3, 0);
|
||||
ptrdiff_t destoffset = luaL_optinteger(L, 4, 0);
|
||||
|
||||
ptrdiff_t size = std::min(source->getSize() - sourceoffset, dest->getSize() - destoffset);
|
||||
if (!lua_isnoneornil(L, 5))
|
||||
size = luaL_checkinteger(L, 5);
|
||||
|
||||
if (sourceoffset < 0 || destoffset < 0)
|
||||
return luaL_error(L, "copyBuffer offsets cannot be negative.");
|
||||
if (size <= 0)
|
||||
return luaL_error(L, "copyBuffer size must be greater than 0.");
|
||||
|
||||
luax_catchexcept(L, [&](){ instance()->copyBuffer(source, dest, sourceoffset, destoffset, size); });
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w_flushBatch(lua_State *)
|
||||
{
|
||||
instance()->flushBatchedDraws();
|
||||
@@ -3451,6 +3472,8 @@ static const luaL_Reg functions[] =
|
||||
{ "print", w_print },
|
||||
{ "printf", w_printf },
|
||||
|
||||
{ "copyBuffer", w_copyBuffer },
|
||||
|
||||
{ "isCreated", w_isCreated },
|
||||
{ "isActive", w_isActive },
|
||||
{ "isGammaCorrect", w_isGammaCorrect },
|
||||
|
||||
Reference in New Issue
Block a user