我正在将LuaJava调整为我的Android应用程序,并希望脚本运行OpenGL函数。我使用pushJavaObject在函数中将GL上下文推送到Lua,并且可以正常工作。但是,我不能在GL10类中使用任何常量,例如COLOR_BUFFER_BIT。有什么办法可以访问这些?我将必须复制所有常量吗?

这有效

function onUpdate(gl)
    GL_COLOR_BUFFER_BIT = 16384
    gl:glClearColor(1, 1, 0, 1)
    gl:glClear(GL_COLOR_BUFFER_BIT)
end


这失败了

function onUpdate(gl)
    gl:glClearColor(1, 1, 0, 1)
    gl:glClear(gl:GL_COLOR_BUFFER_BIT)
end


Java方面

l.getGlobal("onUpdate");
l.pushJavaObject(gl);
l.pcall(1, 1, 0);

最佳答案

您可以尝试以下方法吗:

gl:glClear(gl.GL_COLOR_BUFFER_BIT)


注意第二个gl之后的点

此链接描述了.:之间的区别


http://www.lua.org/pil/16.html

10-08 12:09