Java LWJGL中带有鼠标和纹理的坐标系不匹配

Java LWJGL中带有鼠标和纹理的坐标系不匹配,java,lwjgl,Java,Lwjgl,除了说我的LWJGL似乎有不同的鼠标坐标系和绘画纹理坐标系之外,我真的不知道如何扩展。纹理似乎有一种常见的Java2D方式,将(0,0)放在左上角,而鼠标则更明智地将原点放在左下角。我已经检查了我的代码,但是我没有看到在我读取代码和使用代码之间有任何修改。这让我很困惑,我也不太明白 我将发布所有涉及鼠标输入和纹理绘制的代码,供大家查看 private static void pollHelpers() { while(Mouse.next()) { InputHel

除了说我的LWJGL似乎有不同的鼠标坐标系和绘画纹理坐标系之外,我真的不知道如何扩展。纹理似乎有一种常见的Java2D方式,将(0,0)放在左上角,而鼠标则更明智地将原点放在左下角。我已经检查了我的代码,但是我没有看到在我读取代码和使用代码之间有任何修改。这让我很困惑,我也不太明白

我将发布所有涉及鼠标输入和纹理绘制的代码,供大家查看

private static void pollHelpers()
{
    while(Mouse.next())
    {
       InputHelper.acceptMouseInput(Mouse.getEventButton(),
       Mouse.getEventX(), Mouse.getEventY());
    }
    while (Keyboard.next()) {           
       if (Keyboard.getEventKeyState()) {
           InputHelper.acceptKeyboardInput(Keyboard.getEventKey(), true);
       } else {
           InputHelper.acceptKeyboardInput(Keyboard.getEventKey(), false);
       }  
    } 
}

public static void acceptMouseInput(int mouseButton, int x, int y)
{
    for(InputHelper ie: InputHelper.instances)
    {
        if(ie.checkRectangle(x, y))
        {
            ie.sendMouseInputToParent(mouseButton);
        }
    }
}

private void sendMouseInputToParent(int mouseButton)
{
    parent.onClick(mouseButton);
}

public boolean checkRectangle(int x, int y)
{
    //y = InputManager.HEIGHT - y; See below for explanation

    return x > parent.getX() && x < parent.getX() + parent.getWidth() && 
    y > parent.getY() && y < parent.getY() + parent.getHeight();
}
老实说,对于这种方法到底发生了什么,我一点也不知道,但我能够自己把它组合起来并使它发挥作用。我猜这就是问题所在


谢谢你的帮助

老实说,这看起来是对的。纹理和鼠标输入都是从左上角的(0,0)开始工作的,对此我有100%的把握。你试过记录鼠标的x和y吗?

我刚做过。鼠标在左上角(0,MAX)和左下角(0,0)处读取。我在pollHelpers()方法中放置了一条println()语句,在将鼠标位置发送给其他类之前,我在该方法中第一次读取鼠标位置。快速的谷歌搜索表明,它应该是这样工作的,我相信是纹理拥有无与伦比的坐标系。一些关于投影的东西,但是我不知道有没有一个简单的方法可以不影响我的类的独立性。
public void draw()
{   
    if(!clicked || deactivatedImage == null)
    {
        activatedImage.bind();

        glBegin(GL_QUADS);
        {
            DrawHelper.drawGLQuad(activatedImage, x, y, width, height);
        }
        glEnd();
    } else {
        deactivatedImage.bind();

        glBegin(GL_QUADS);
        {
            DrawHelper.drawGLQuad(deactivatedImage, x, y, width, 
                                    height);
        }
        glEnd();
    }

}

public static void drawGLQuad(Texture texture, float x, float y, float width, float 
            height)
{
    glTexCoord2f(x, y);
    glVertex2f(x, y);

    glTexCoord2f(x, y + texture.getHeight());
    glVertex2f(x, y + height);

    glTexCoord2f(x + texture.getWidth(), y + texture.getHeight());
    glVertex2f(x + width, y +height);

    glTexCoord2f(x + texture.getWidth(), y);
    glVertex2f(x + width, y);
}