在按照创建基本粒子系统的教程后,我开始实现AntTweakBar以获得基本的UI。一切顺利,一切顺利。但是一旦我开始添加回调函数,它开始变得有点乱,声称它在方法定义的中间抛出它:
智能感知:期待&#39 ;;'
有问题的方法是:
void GLFWCALL OnMouseRight(int glfwButton, int glfwAction)
{
if( !TwEventMouseButtonGLFW(glfwButton, glfwAction) ) // Send event to AntTweakBar
{
if(glfwButton == GLFW_MOUSE_BUTTON_RIGHT)
computeMatricesFromInputs();
else
// Event has not been handled by AntTweakBar
// Do something if needed.
}
}
错误显然是在名称OnMouseRight
和以下括号之间弹出的。我该如何摆脱这个错误?我使用C ++在OpenGL中编写代码(使用GLFW和GLEW),我一直在遵循这个page on the AntTweakBar site的步骤。我已经查阅了大部分的GLFW文档而且找不到太多。任何帮助表示赞赏。
答案 0 :(得分:0)
导致错误的else
之后缺少一条语句:
if(glfwButton == GLFW_MOUSE_BUTTON_RIGHT)
computeMatricesFromInputs();
else
// ^ no statement here
您可以添加分号作为Intellisense建议或空复合语句{}
:
if(glfwButton == GLFW_MOUSE_BUTTON_RIGHT) {
computeMatricesFromInputs();
} else {
// Event has not been handled by AntTweakBar
// Do something if needed.
}
答案 1 :(得分:0)
是的,经过漫长的一夜工作以解决这个问题并再次浏览GLFW的文档后,我发现问题在于宏GLFWCALL
。 C ++将其视为一种独立的方法,因此忽略了实际的方法。 GLFW的文档解释了原因:
已删除
GLFWCALL
宏,该回调函数在Windows上使用__stdcall
。 GLFW是用C语言编写的,而不是Pascal语言。删除此宏意味着GLFW的用户可以记住一件事,即需要用GLFWCALL
标记所有回调函数。它还简化了DLLs
和DLL
链接库的创建,因为不需要明确禁用@n
入口点后缀。
在删除GLFWCALL
并遵循@vitaut的建议时,我的程序现在可以正确处理正确的鼠标输入。