我知道有一些使用LuaJIT FFI创建指针的例子,但其中大部分并未指向现有数据.其中一个例子就是: How to pass a pointer to LuaJIT ffi to be used as out argument? 我无法成功做的一件事是创建一个指向
How to pass a pointer to LuaJIT ffi to be used as out argument?
我无法成功做的一件事是创建一个指向现有值的指针.据我所知,为了得到一个指针类型,我必须知道我想在将来的某个时刻指向它,如:
local vao = ffi.new("GLuint[1]") gl.GenVertexArrays(1, vao) gl.BindVertexArray(vao[0])
在这里,我知道glGenVertexArrays需要一个指向vao的指针,所以我将它指定为GLuint [1].在C中,我会做类似以下的事情:
GLuint vao; glGenVertexArrays(1, &vao); glBindVertexArray(vao);
在这里,我不知道我需要一个指向vao的指针,所以我可以正常指定它.
换句话说,有没有办法获取现有值的地址或创建指针?在创建它之前,我是否必须预见到我将使用该值做什么?
谢谢!
没有办法在FFI中获得指向cdata对象的指针.我记得在LuaJIT邮件列表中读到这是为了一些优化工作而故意做的,虽然我在档案中找不到确切的消息.
到目前为止,我还没有需要获取cdata对象的指针; LuaJIT通过引用引用cdata(类似于表),类型[1]技巧适用于out参数.