2
我试图从用户输入中绘制一个矩形,该矩形从左键单击收集x1,y1坐标,然后从释放左键单击中指定x2,y2。我成功保存了基于此鼠标动作的坐标(基于cout < <声明确认坐标已保存),但在左键释放后没有显示任何内容。在按下并释放鼠标绘制矩形,opengl
这里是我试过(记住,没有崩溃,所以有一个逻辑错误)
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glColor3f(1,1,0);
glBegin(GL_POLYGON);
glVertex2f(clip_start.x_coord,clip_start.y_coord);
glVertex2f(clip_finish.x_coord,clip_start.y_coord);
glVertex2f(clip_finish.x_coord,clip_finish.y_coord);
glVertex2f(clip_start.x_coord,clip_finish.y_coord);
glEnd();
glPopMatrix();
glutSwapBuffers();
glutPostRedisplay();
drawit();
}
void mouse(int button, int state, int x, int y){
if(c_pressed){
switch(button){
case GLUT_LEFT_BUTTON:
if(state==GLUT_DOWN){
clip_start.x_coord=x; //x1
clip_start.y_coord=y; //y1
cout<<"Initial pos set"<<endl;
}
if(state==GLUT_UP){
clip_finish.x_coord=x; //x2
clip_finish.y_coord=y; //y2
cout<<"Final pos set"<<endl;
}
break;
}
clip_ready==true;
}
}
void keyboard(unsigned char key, int x, int y){
if(key == 'c'){
c_pressed = true;
cout<<"c pressed"<<endl;
}
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(ImageW,ImageH);
glutInitWindowPosition(100,100);
glutCreateWindow("");
init();
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
的 “SC” 在[SSCCE(http://meta.stackexchange.com/questions/22754/sscce-how-to-provide-examples-for-编程问题)非常重要。包含所有预期的函数和结构定义。 – genpfault