在全域命名空間中,我有一個 GLFW 回呼函式:
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if (key == GLFW_MOUSE_BUTTON_RIGHT && action == GLFW_PRESS)
{
}
}
此函式必須從主函式的本地命名空間接收一個物件:
int main()
{
...
Sphere lightSphere{ 0.8f, outerColor, centerColor };
...
}
在主回圈中,我有一個 GLFW 回呼函式。
glfwSetKeyCallback(window, key_callback);
是否可以在不在全域命名空間中宣告物件的情況下實作它?
uj5u.com熱心網友回復:
設定用戶指標window并在回呼中檢索它。
glfwSetWindowUserPointer(window, &lightSphere);
glfwSetKeyCallback(window, key_callback);
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
Sphere* sphere = static_cast<Sphere*>(glfwGetWindowUserPointer(window));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515297.html
下一篇:輸出沒有回圈和陣列的最小和最大數
