我希望每次左键单击时我的程序都会制作一个四边形。 我是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()){}
答案 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;
}
如果不是,从第一次运行的那一刻开始,绳索将保持不变