Java 让我的GLU四边形显示出来
我想让我的程序在每次点击鼠标左键时生成一个四边形。 我是lwjgl的新手,正在尝试使用if语句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
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;
}
如果没有,则从程序第一次运行时起,跳线将保持不变