让我的GL_QUADS显示

时间:2013-06-30 22:32:46

标签: java opengl static while-loop lwjgl

我希望每次左键单击时我的程序都会制作一个四边形。 我是lwjgl的新手,我正在尝试使用if语句

    if(lClick == true){
drawQuad();
}

现在,(来自调试)我知道if语句有效,所以我的错误必须在我的drawQuad()变量中。

这是我的drawQuad:

public static void drawQuad(){
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity(); // Resets any previous projection matrices
    glOrtho(0, 640, 480, 0, 1, -1);
    glMatrixMode(GL_MODELVIEW);

    //System.out.println("drawQuad Is Being Used");

glBegin(GL_QUADS);
        glVertex2i(c1, c2);
        glVertex2i(c1, c4);
        glVertex2i(c2, c1);
        glVertex2i(c2, c3);
glEnd();

}

我的c1,c2,c3和c4整数是

        int c1 = Mouse.getX() + 25;
        int c2 = Mouse.getX() - 25;
        int c3 = Mouse.getY() + 25;
        int c4 = Mouse.getY() - 25;

所有这些整数都在

之下
while(!Display.isCloseRequested()){}

4 个答案:

答案 0 :(得分:0)

一个常见的新手错误是从输入事件处理程序调用OpenGL绘图函数。根据所使用的框架,输入事件处理程序中可能没有活动的OpenGL上下文。

不是直接绘制四边形,而是应该附加到某个列表或数组,并在绘图代码中根据该列表/数组中的数据绘制四边形。

答案 1 :(得分:0)

    int c1 = Mouse.getX() + 25;
    int c2 = Mouse.getX() - 25;
    int c3 = Mouse.getY() + 25;
    int c4 = Mouse.getY() - 25;

你有可能不在整数中加25吗?下面可能是一个解决方案(附加=运算符)。对不起,这是我的第一份贡献。

    int c1 = Mouse.getX() += 25;
    int c2 = Mouse.getX() -= 25;
    int c3 = Mouse.getY() += 25;
    int c4 = Mouse.getY() -= 25;

答案 2 :(得分:0)

在OpenGL中,您必须每帧重绘整个场景。因此,不是在单击鼠标时绘制一次四边形,而是应该存储每个四边形的位置(可能在ArrayList中?)。然后,每次调用draw / render函数时,您都可以绘制已放置的每个四边形。

作为旁注,我建议学习OpenGL 3+而不是传统的OpenGL。

答案 3 :(得分:0)

您是否正在更新变量,例如您点击的时候是

public void updateCords(){
    c1 = Mouse.getX() + 25;
    c2 = Mouse.getX() -= 25;
    c3 = Mouse.getY() += 25;
    c4 = Mouse.getY() -= 25;
}

如果不是,从第一次运行的那一刻开始,绳索将保持不变