将C中的值传递给Lua。

现在我正在通过将SDL封装到Lua中来加强我的C技能。现在我正在努力传递Lua图片。然而,它似乎传递正确。我进行了测试,打印了预传递的SDL_Textue的值和到达的那个值,它们似乎是相同的。有人知道问题出在哪里吗?

谢谢!

static int drawSprite(lua_State* alua) {

    textureDim.x = 100;
    textureDim.y = 100;
    textureDim.w = 100;
    textureDim.h = 100;

    SDL_Texture *param = (SDL_Texture*)lua_touserdata(alua,1);
    cout << param << endl;
    SDL_RenderCopy(renderer, param, NULL, &textureDim);
    SDL_RenderCopy(renderer, testimg, NULL, &textureDim);
    lua_pop(alua, 1);
    return 1;
}

static const luaL_Reg gSpriteFuncs[] = {
    // 创建
    { "new", loadSprite },
    { "draw", drawSprite },
    { NULL, NULL }
};

static int loadSprite(lua_State* alua) {
    // 为指向对象的指针分配内存
    SDL_Texture **s = (SDL_Texture **)lua_newuserdata(alua, sizeof(SDL_Texture *));

    *s = IMG_LoadTexture(renderer, "cooldawg.png");
    cout << s << endl;
    lua_getglobal(alua, "Sprite"); // 使用全局表'Sprite'作为元表
    lua_setmetatable(alua, -2);

    return 1;
}
// bah
点赞