在OpenGL中,利用鼠标和键盘来对应用程序产生交互是必须的,我们可以制作一个菜单让我们选择要绘画的类型,图元的颜色及线条粗细等材质.
我刚刚参考了一个网上的例子,原先自己最大的问题就是对于OpenGL 调用函数放置的位置,现在看来自己可以先写写几个应用的例子,提高效率
下面是创建一个窗口,单击鼠标后会产生一簇簇的直线系,重点是学习鼠标函数的应用机制.
时间不多,保护眼睛.
#include<stdio.h>
#include<GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(3);
glBegin(GL_POINTS);
glVertex2i(0,0);
glEnd();
glFlush();
}
void mymouse(int button,int state,int x,int y)//定义鼠标函数
{
if(state == GLUT_DOWN)
{
while(x<500 && y<500)
{
printf("%d,%d\n",x,y);
glBegin(GL_LINES);
glColor3f(1.0,0.0,0.0);
glVertex2i(0,0);
glVertex2i(x-250,250-y);//transform to world orrdixio
glVertex2i(x-250,250-y);
//glVertex2i(x,y);
glEnd();
glFlush();
x=x+3;//loop
y=y+3;
}
}
}
init()
{
glMatrixMode(GL_PROJECTION);//投影模式
glLoadIdentity();//载入单位矩阵
gluOrtho2D(-250.0,250.0,-250.0,250.0);//
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
/*single mode or rgb mode*/
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500);//设定窗口大小
glutInitWindowPosition(0,0);
glutCreateWindow("hello,opengl");
glutDisplayFunc(display);//调用函数
init();//init
glutMouseFunc(mymouse);//调用鼠标事件
glutMainLoop();
}