From 0b48dacb4e984eb795df33e866f2327d66a34e89 Mon Sep 17 00:00:00 2001 From: Sasha Szpakowski Date: Sun, 26 Mar 2023 20:46:24 -0300 Subject: [PATCH] Remove convenience constructor functions for vertex and index buffers. love.graphics.newVertexBuffer and newIndexBuffer don't do enough to justify their existence since love.graphics.newBuffer already covers all buffer creation functionality. 1-based indices in newIndexBuffer versus 0-based indices in newBuffer(..., {index=true}) was also confusing. --- src/modules/graphics/wrap_Graphics.cpp | 96 -------------------------- 1 file changed, 96 deletions(-) diff --git a/src/modules/graphics/wrap_Graphics.cpp b/src/modules/graphics/wrap_Graphics.cpp index 313c4f0e8..097c0534d 100644 --- a/src/modules/graphics/wrap_Graphics.cpp +++ b/src/modules/graphics/wrap_Graphics.cpp @@ -1768,100 +1768,6 @@ int w_newBuffer(lua_State *L) return 1; } -int w_newVertexBuffer(lua_State *L) -{ - Buffer::Settings settings(BUFFERUSAGEFLAG_VERTEX, BUFFERDATAUSAGE_DYNAMIC); - luax_optbuffersettings(L, 3, settings); - - std::vector format; - luax_checkbufferformat(L, 1, format); - - Buffer *b = luax_newbuffer(L, 2, settings, format); - - luax_pushtype(L, b); - b->release(); - return 1; -} - -int w_newIndexBuffer(lua_State *L) -{ - Buffer::Settings settings(BUFFERUSAGEFLAG_INDEX, BUFFERDATAUSAGE_DYNAMIC); - luax_optbuffersettings(L, 3, settings); - - size_t arraylength = 0; - size_t bytesize = 0; - DataFormat format = DATAFORMAT_UINT16; - Data *data = nullptr; - const void *initialdata = nullptr; - - if (luax_istype(L, 1, Data::type)) - { - data = luax_checktype(L, 1); - initialdata = data->getData(); - bytesize = data->getSize(); - } - - if (lua_istable(L, 1)) - { - arraylength = luax_objlen(L, 1); - - // Scan array for invalid types and the max value. - lua_Integer maxvalue = 0; - for (size_t i = 0; i < arraylength; i++) - { - lua_rawgeti(L, 1, i + 1); - lua_Integer v = luaL_checkinteger(L, -1); - lua_pop(L, 1); - if (v < 0) - return luaL_argerror(L, 1, "expected positive integer values in array"); - else - maxvalue = std::max(maxvalue, v); - } - - format = getIndexDataFormat(getIndexDataTypeFromMax(maxvalue)); - } - else if (data == nullptr) - { - lua_Integer len = luaL_checkinteger(L, 1); - if (len <= 0) - return luaL_argerror(L, 1, "number of elements must be greater than 0"); - arraylength = (size_t) len; - settings.zeroInitialize = true; - } - - if (data != nullptr || !lua_isnoneornil(L, 2)) - { - const char *formatstr = luaL_checkstring(L, 2); - if (!getConstant(formatstr, format)) - return luax_enumerror(L, "index data format", getConstants(format), formatstr); - } - - Buffer *b = nullptr; - luax_catchexcept(L, [&] { b = instance()->newBuffer(settings, format, initialdata, bytesize, arraylength); }); - - if (lua_istable(L, 1)) - { - Buffer::Mapper mapper(*b); - uint16 *u16data = (uint16 *) mapper.data; - uint32 *u32data = (uint32 *) mapper.data; - - for (size_t i = 0; i < arraylength; i++) - { - lua_rawgeti(L, 1, i + 1); - lua_Integer v = luaL_checkinteger(L, -1); - lua_pop(L, 1); - if (format == DATAFORMAT_UINT16) - u16data[i] = (uint16) v; - else - u32data[i] = (uint32) v; - } - } - - luax_pushtype(L, b); - b->release(); - return 1; -} - static PrimitiveType luax_checkmeshdrawmode(lua_State *L, int idx) { const char *modestr = luaL_checkstring(L, idx); @@ -3834,8 +3740,6 @@ static const luaL_Reg functions[] = { "newShader", w_newShader }, { "newComputeShader", w_newComputeShader }, { "newBuffer", w_newBuffer }, - { "newVertexBuffer", w_newVertexBuffer }, - { "newIndexBuffer", w_newIndexBuffer }, { "newMesh", w_newMesh }, { "newTextBatch", w_newTextBatch }, { "_newVideo", w_newVideo },