STATIC mp_obj_t mod_sf2d_RenderTarget_clear(mp_obj_t self_in) { SELF(self_in); sf2d_clear_target(self->target, self->clear_color); return mp_const_none; }
/*** Clear a target to a specified color. @function :clear @tparam[opt=default color] integer color color to fill the target with */ static int gfx_target_clear(lua_State *L) { target_userdata *target = luaL_checkudata(L, 1, "LTarget"); u32 color = luaL_optinteger(L, 2, color_default); sf2d_clear_target(target->target, color); return 0; }
static int gfx_target___index(lua_State *L) { target_userdata *target = luaL_checkudata(L, 1, "LTarget"); const char* name = luaL_checkstring(L, 2); if (strcmp(name, "texture") == 0) { texture_userdata *texture; texture = (texture_userdata*)lua_newuserdata(L, sizeof(*texture)); luaL_getmetatable(L, "LTexture"); lua_setmetatable(L, -2); texture->texture = &(target->target->texture); texture->scaleX = 1.0f; texture->scaleY = 1.0f; texture->blendColor = 0xffffffff; return 1; } else if (strcmp(name, "duck") == 0) { sf2d_rendertarget *target = sf2d_create_rendertarget(64, 64); for(int i=0;;i++) { sf2d_clear_target(target, 0xff000000); sf2d_start_frame_target(target); sf2d_draw_fill_circle(i%380, i%200, 10, 0xff0000ff); sf2d_end_frame(); //sf2d_texture_tile32(&target->texture); sf2d_start_frame(GFX_TOP, GFX_LEFT); sf2d_draw_texture(&target->texture, 10, 10); sf2d_end_frame(); sf2d_swapbuffers(); } } else { for (u8 i=0;target_methods[i].name;i++) { if (strcmp(target_methods[i].name, name) == 0) { lua_pushcfunction(L, target_methods[i].func); return 1; } } } lua_pushnil(L); return 1; }