如何在Gideros中创建3d网格顶点

时间:2018-04-10 04:48:19

标签: lua gideros

我第一次使用Lua,当然需要检查一下以了解如何实现某些代码。

要在Gideros中创建顶点,请输入以下代码:

 mesh:setVertex(index, x, y)

但是,我还想使用z坐标。 我一直在检查,但没有找到任何帮助。有谁知道Gideros是否有这方面的方法,或者是否有任何关于设置z坐标的提示和技巧?

1 个答案:

答案 0 :(得分:1)

首先,这些功能不是由Lua提供的,而是由Gideros Lua API提供的。 在原生Lua中没有网格或类似的东西。

参考参考资料Gideros Lua API参考手册将为您提供一些有价值的提示:

http://docs.giderosmobile.com/reference/gideros/Mesh#Mesh

  

网格可以是2D或3D,后者需要一个额外的Z坐标   在它的顶点。

http://docs.giderosmobile.com/reference/gideros/Mesh/new

  

Mesh.new([is3d])

     

参数:

     

is3d:(boolean)指定此网格   期望Z坐标在其顶点数组中,因此是3D网格

因此,为了创建一个3d网格,您必须执行以下操作:

local myMesh = Mesh.new(true)

虽然手册没有说你可以在setVertex中使用z坐标

http://docs.giderosmobile.com/reference/gideros/Mesh/setVertex

你很可能会这样做。

让我们来看看Gideros的源代码:

https://github.com/gideros/gideros/blob/1d4894fb5d39ef6c2375e7e3819cfc836da7672b/luabinding/meshbinder.cpp#L96-L109

int MeshBinder::setVertex(lua_State *L)
{
    Binder binder(L);
    GMesh *mesh = static_cast<GMesh*>(binder.getInstance("Mesh", 1));

    int i = luaL_checkinteger(L, 2) - 1;
    float x = luaL_checknumber(L, 3);
    float y = luaL_checknumber(L, 4);
    float z = luaL_optnumber(L, 5, 0.0);

    mesh->setVertex(i, x, y, z);

    return 0;
}

在这里你可以看到你确实可以提供一个z坐标并且它将被使用。

所以

local myMesh = Mesh.new(true)
myMesh:SetVertex(1, 100, 20, 40)

应该可以正常工作。

你可以简单地尝试一下btw。这是免费的,它没有伤害,这是最好的学习方式!