在lwjgl渲染中移动渲染器

时间:2015-01-21 10:49:04

标签: java opengl matrix rendering lwjgl

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

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 个答案:

答案 0 :(得分:1)

glRecti不会以预期角落坐标

的方式工作

所以你应该这样做:

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