openGL入门小程序
#include#include #include GLdouble angle = 0.0; GLdouble translation = 0.0; GLdouble scale = 1.0;void init(void) {glClearColor(1.0,1.0,1.0,1.0);//设置清屏颜色,1,1,1,白色//glClear(GL_COLOR_BUFFER_BIT);清屏//指定着色模型glShadeModel(GL_FLAT);//单调着色glColor3f(0.0,0.0,0.0);//黑色}void keyboard(unsigned char key, int x, int y) {if(key==27)exit(0); }void display(void) {glClear(GL_COLOR_BUFFER_BIT); //清除颜色缓存glColor3f(0.0,0.0,0.0); //指定颜色//模型变换//指定模型//glTranslatef(0.01f,0.0f,0.0f);//设定坐标原点glRotatef(45,0.0f,0.0f,1.0f);glBegin(GL_TRIANGLES);glVertex3f( 0.0f, 1.0f, 0.0f);// 上顶点glVertex3f(-1.0f,-1.0f, 0.0f);// 左下glVertex3f( 1.0f,-1.0f, 0.0f);// 右下glEnd();// 三角形绘制结束glFlush();//马上执行printf("display invoke!\n");//glTranslatef(0.3f, 0.0f, 0.0f); }void mouseFunc(int button, int state, int x, int y) {if(button == GLUT_LEFT_BUTTON && state==GLUT_DOWN)//点击左键,并处于按下状态{/*glMatrixMode(GL_MODELVIEW);glLoadIdentity();glRotatef(x,0,0,1);glRotatef(y,1,0,0);*///glTranslatef(300.0f,0.0f,0.0f);// 右移3单位//glLoadIdentity();//复位键,使坐标回到初始状态//glTranslatef(0.3f, 0.0f, 0.0f);//为什么在这个里面就不能执行?glutPostRedisplay();//申请重绘当前窗口glutDisplayFunc(display); glRotatef(45,0.0f,0.0f,1.0f);printf("left click!\n");} }void reshape (int w, int h) {glViewport(0,0,(GLsizei)w,(GLsizei)h); }int main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100);glutCreateWindow("OpenGL中的建模与变换");init();glutDisplayFunc(display); glutReshapeFunc(reshape);glutKeyboardFunc(keyboard);glutMouseFunc(mouseFunc);glutMainLoop();return 0; }
开始的话gult库中的各种函数可能对于初学者不太熟悉,请百度自行解决。这里必须调用glutPostRedisplay();申请重绘当前窗口,才能再次使回调函数触发,然后通过glRotatef(45,0.0f,0.0f,1.0f);实现旋转。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
