Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让我的GLU四边形显示出来_Java_Opengl_Static_While Loop_Lwjgl - Fatal编程技术网

Java 让我的GLU四边形显示出来

Java 让我的GLU四边形显示出来,java,opengl,static,while-loop,lwjgl,Java,Opengl,Static,While Loop,Lwjgl,我想让我的程序在每次点击鼠标左键时生成一个四边形。 我是lwjgl的新手,正在尝试使用if语句 if(lClick == true){ drawQuad(); } 现在,(通过调试)我知道if语句是有效的,所以我的错误一定在drawQuad()变量中 这是我的抽屉: public static void drawQuad(){ glMatrixMode(GL_PROJECTION); glLoadIdentity(); // Resets any previous pr

我想让我的程序在每次点击鼠标左键时生成一个四边形。 我是lwjgl的新手,正在尝试使用if语句

    if(lClick == true){
drawQuad();
}
现在,(通过调试)我知道if语句是有效的,所以我的错误一定在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()){}

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

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

    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;

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


作为补充说明,我建议学习OpenGL 3+而不是传统的OpenGL

你是否在更新你的变量,比如当你点击时你在说什么

public void updateCords(){
    c1 = Mouse.getX() + 25;
    c2 = Mouse.getX() -= 25;
    c3 = Mouse.getY() += 25;
    c4 = Mouse.getY() -= 25;
}
如果没有,则从程序第一次运行时起,跳线将保持不变