setUniformFloatv lua无法用?第三个参数直接无视了?技术大大来看看

这个接口lua无法用?
第三个参数直接无视了?

麻烦把问题说得清楚些。为什么说是无用的?是遇到什么错误了,还是什么效果不对。另外,你贴的这部分代码是什么意思?

可能是我说的不够清楚,我在看源码的时候发现setUniformFloatv这个lua导出的接口
void setUniformFloatv(const std::string& uniformName, ssize_t size, const float* pointer);
void setUniformFloatv(GLint uniformLocation, ssize_t size, const float* pointer);
看定义是3个参数,第一个是opengle相关的(就不说了,就是对应定义的uniform变量),第二个是数组的长度, 第三个是数组的指针。
然后我贴的这段代码是lua导出的lua_cocos2dx_GLProgramState_setUniformFloatv 完整如下
int lua_cocos2dx_GLProgramState_setUniformFloatv(lua_State* tolua_S)
{
int argc = 0;
cocos2d::GLProgramState* cobj = nullptr;
bool ok = true;
#if COCOS2D_DEBUG >= 1
tolua_Error tolua_err;
#endif

#if COCOS2D_DEBUG >= 1
if (!tolua_isusertype(tolua_S,1,“cc.GLProgramState”,0,&tolua_err)) goto tolua_lerror;
#endif
cobj = (cocos2d::GLProgramState*)tolua_tousertype(tolua_S,1,0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,“invalid ‘cobj’ in function ‘lua_cocos2dx_GLProgramState_setUniformFloatv’”, nullptr);
return 0;
}
#endif //下面是重点
argc = lua_gettop(tolua_S)-1;
do{
if (argc == 3) { //参数数量 = 3
int arg0;
ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, “cc.GLProgramState:setUniformFloatv”); //拿到第一个参数并返回成功状态

        if (!ok) { break; }
        ssize_t arg1;
        ok &= luaval_to_ssize(tolua_S, 3, &arg1, "cc.GLProgramState:setUniformFloatv");//拿到第2个参数并返回成功状态

        if (!ok) { break; }
        const float* arg2;
       ** #pragma warning NO CONVERSION TO NATIVE FOR float*//!!!!!!!!!!这里怎么不拿第三个参数?**
	**ok = false; //然后默认是失败的!!!这是要我们自己实现的节奏么?**

        if (!ok) { break; }
        cobj->setUniformFloatv(arg0, arg1, arg2);
        lua_settop(tolua_S, 1);
        return 1;
    }
}while(0);
ok  = true;
do{
    if (argc == 3) {
        std::string arg0;
        ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.GLProgramState:setUniformFloatv");

        if (!ok) { break; }
        ssize_t arg1;
        ok &= luaval_to_ssize(tolua_S, 3, &arg1, "cc.GLProgramState:setUniformFloatv");

        if (!ok) { break; }
        const float* arg2;
        #pragma warning NO CONVERSION TO NATIVE FOR float*
	ok = false;

        if (!ok) { break; }
        cobj->setUniformFloatv(arg0, arg1, arg2);
        lua_settop(tolua_S, 1);
        return 1;
    }
}while(0);
ok  = true;
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n",  "cc.GLProgramState:setUniformFloatv",argc, 3);
return 0;

#if COCOS2D_DEBUG >= 1
tolua_lerror:
tolua_error(tolua_S,"#ferror in function ‘lua_cocos2dx_GLProgramState_setUniformFloatv’.",&tolua_err);
#endif

return 0;

}

引擎是3.10的

js_cocos2dx_GLProgramState_setUniformFloatv
意思是 自动脚本绑定 GLProgramState 方法中 不管怎么传参都会失败,

jsb_cocos2dx_auto.cpp 文件 js_cocos2dx_GLProgramState_setUniformFloatv :

do { if (argc == 3) { std::string arg0; ok &= jsval_to_std_string(cx, args.get(0), &arg0); if (!ok) { ok = true; break; } ssize_t arg1 = 0; ok &= jsval_to_ssize(cx, args.get(1), &arg1); if (!ok) { ok = true; break; } const float* arg2 = 0; #pragma warning NO CONVERSION TO NATIVE FOR float* 问题在这里 ok = false; if (!ok) { ok = true; break; } cobj->setUniformFloatv(arg0, arg1, arg2); args.rval().setUndefined(); return true; } } while(0);
因为目前不支持将脚本的 float32Array 对象 转成 c++ 的 float*

那我要问 这个方法不能用 我能怎么办?
手动改C++代码还是有其他方案等同于使用改方法的?