我试图创建一个多边形,并在释放鼠标按钮时平移/旋转它.我可以这样做,如果我再次使用glBegin和重绘我的整个多边形,glEnd但我不确定我是否真的需要这个,因为我已经在屏幕上绘制了一次多边形,只是想使用相同的对象并应用旋转/平移它.
我在下面放一个片段.
if(state == GLUT_UP){
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(90,0,0,1);
// glTranslatef(50,-50,0);
/*
glBegin(GL_POLYGON);
glVertex2i (-40,40) ; //Specify li ne - se gme nt ge ometry .
glVertex2i (-30 , -40) ;
glVertex2i (0 , 20) ;
glVertex2i (40 , 35) ;
glEnd() ;
*/
glClear(GL_COLOR_BUFFER_BIT);
glPopMatrix();
glutSwapBuffers();
// glutPostRedisplay();
}
Run Code Online (Sandbox Code Playgroud)
dat*_*olf 12
请跟我说:"我再也不会把OpenGL绘图调用放到事件处理程序中了!"
在事件处理程序中,您根据事件设置一些变量,然后发出重绘调用,并在渲染函数中根据变量的内容绘制.
OpenGL也不会"记住"你画的内容.你发送绘图命令,OpenGL做它的行为,然后忘记它.剩下的唯一痕迹是转向帧缓冲区上像素的片段.但帧缓冲内容不受转换或任何OpenGL状态更改的影响.只有绘图会影响帧缓冲.