我正在尝试用一个模型和一个光标回调用OpenGL制作一个按钮。我制作了一个按钮模型,用于当用户将鼠标悬停在按钮上时,以及按钮本身。我想知道用户的光标何时悬停在按钮上。所以我有一个光标回调:glfwSetCursorPosCallback()我能够检索到光标的y和x屏幕坐标。但是我的模型与[-1,1]有坐标,如何将光标的屏幕坐标转换为世界空间坐标?样例代码会很棒。
glfwSetCursorPosCallback()
t1qtbnec1#
我发现了一个名为unProject的伟大函数,并使用了它。我不得不加入一个名为GLM的额外库,但这是值得的!以下是我的代码:
static void cursorPositionCallback(GLFWwindow* window, double xPos, double yPos) { glm::vec3 win(xPos,yPos,0); glm::vec4 viewport(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); glm::vec3 realpos = glm::unProject(win, glm::mat4(1.0f), glm::mat4(1.0f), viewport); GLfloat worldSpacex = -realpos.x; GLfloat worldSpacey = -realpos.y; }
1条答案
按热度按时间t1qtbnec1#
我发现了一个名为unProject的伟大函数,并使用了它。我不得不加入一个名为GLM的额外库,但这是值得的!
以下是我的代码: