OpenGL如何转换光标的坐标,从屏幕坐标到世界坐标

tzdcorbm  于 2022-10-18  发布在  其他
关注(0)|答案(1)|浏览(402)

我正在尝试用一个模型和一个光标回调用OpenGL制作一个按钮。
我制作了一个按钮模型,用于当用户将鼠标悬停在按钮上时,以及按钮本身。
我想知道用户的光标何时悬停在按钮上。
所以我有一个光标回调:
glfwSetCursorPosCallback()
我能够检索到光标的y和x屏幕坐标。但是我的模型与[-1,1]有坐标,如何将光标的屏幕坐标转换为世界空间坐标?
样例代码会很棒。

t1qtbnec

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;

}

相关问题