调整大小与鼠标位置无关

时间:2013-10-26 17:32:38

标签: c++ opengl resize mouse glfw

我正在使用GLFW,当我调整窗口大小时,它会导致鼠标位置返回:

int x,y;
glfwGetMousePos(&x,&y);

与屏幕上绘制的对象无关。这是我用作调整大小函数的内容:

void GLFWResizefunc(int width, int height){
    glViewport(0, 0, width, height);

}

我首先注意到我的按钮存在这个问题,以及点击它们时它们是如何不再激活的。

如果您需要更多信息,请不要犹豫,我不知道需要什么。

回应derhass的问题:

对于按钮,我将使用以下内容显示它们:

void Button::render() {
    glEnable (GL_TEXTURE_2D);
    if(!clicked){
    glBindTexture (GL_TEXTURE_2D, *tex);
    }
    else{
        glBindTexture(GL_TEXTURE_2D,*pressed);
            }
    glBegin (GL_QUADS);
    glTexCoord2f (0.0, 0.0);
    glVertex2f (getsx(), getsy());
    glTexCoord2f (1.0, 0.0);
    glVertex2f (getSxmax(), getsy());
    glTexCoord2f (1.0, 1.0);
    glVertex2f (getSxmax(), getSymax());
    glTexCoord2f (0.0, 1.0);
    glVertex2f (getsx(), getSymax());
    glEnd();
    glDisable (GL_TEXTURE_2D);
    t.render();
}

t.render是指在按钮上呈现文本,该按钮是一个单独的对象。对于屏幕x,y最大屏幕x,y,每个按钮具有sx,sy,sxmax和sy max。要检查按钮是否与鼠标点击相交,我将通过以下方式传递ints:

int x,y;
glfwGetMousePos(&x,&y);

以下功能:

bool ScreenObject::intersects (float x, float y) {


    std::cout<<"X: "<<x<<"Y: "<<y<<" BX: "<<getsx()<<"BY: "<<getsy()<<std::endl;
    if (x > getsx() && x < getSxmax() ) {
        if (y > getsy() && y < getSymax() )
            return true;
    }

    return false;
}

如果返回true,则它与对象相交,在本例中为一个按钮。

我使用以下内容:

glFrustum (.5, -.5, -.5 * aspect_ratio, .5 * aspect_ratio, 1, 50);
glMatrixMode (GL_MODELVIEW);

0 个答案:

没有答案