有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

lwjgl渲染中的java移动渲染器

我用lwjgl制作了一个简单的应用程序,并创建了简单的gui。现在我有框架和面板。但有一个问题。 因为(显示800x600)当我在面板(x,y,w,h)(0,0,64,64)上创建面板时,一切正常,但当我在其他位置(x,y,其中点0,0位于左上角)创建它时,它会渲染移动的面板。 Capture of  rendering 空白是我的面板,当我在上面拖动鼠标时,它应该会改变颜色。它是在(417417,64,64)上创建的,但它是在类似于(90,90)的东西上渲染的。 我已呈现字体以显示其所有位置。我在这张图上画的蓝色框是它应该在的地方,它看起来像是面板在那里,因为当我把鼠标拖动到那里时,白色空间正在改变颜色,但是这个白色空间应该在那里。 我的代码如下所示: 我将所有组件添加到HashMap类面板中

glColor3f(backgroundColor.getRed(), backgroundColor.getGreen(),
                backgroundColor.getBlue());
        if (hasFocus()) {
            glColor3f(1f, 0f, 0f);
        }
        glPushMatrix();
        glRecti(getX(), getY(), getWidth(), getHeight());
        glPopMatrix();

和initGL方法:

glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glScalef(1.0f, 1.0f, 1.0f);
        glOrtho(0, 800, 600, 0, 1, -1);
        glFrustum(-1, 1, -1, 1, 0.0, 40.0);
        glViewport(0, 0, Display.getWidth(), Display.getHeight());
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glShadeModel(GL_SMOOTH);

共 (1) 个答案

  1. # 1 楼答案

    glRecti不是这样工作的,它需要角点的坐标

    因此,你应该:

    glRecti(getX(), getY(), getX()+getWidth(), getY()+getHeight());