// first.c
#include "GL/glut.h"
#include "stdlib.h"
void init(void);
void keyboard(unsigned char key, int x, int y);
void mouse(int button, int state, int x, int y);
void display(void);
void reShape(int width, int height);
void idle(void);
void timer(int);
GLdouble rotate_1 = 0,rotate_2=0;
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (800, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
init ();
glutTimerFunc(30, timer, 1);
glutDisplayFunc(display);
glutReshapeFunc(reShape);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
// glEnable(GL_FOG);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glLoadIdentity();//Çå¿ÕŸØÕó
glMatrixMode(GL_MODELVIEW);
gluLookAt(0.1,0.1,0.1, 0.0,0.0,0.0, 0.0,0.1,0.0);
//glScalef(1.0,1.1,1.0);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(2.0, 0.0, 0.0);
glEnd();
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 2.0, 0.0);
glEnd();
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_LINE_STRIP);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, 2.0);
glEnd();
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_LOOP);
glVertex3f(0.25, 0.25, 0.0);
glVertex3f(0.25, 0.75, 0.0);
glVertex3f(0.75, 0.55, 0.0);
glEnd();
glutWireCube(1.0);
glRotatef(rotate_1,0.0,1.0,0.0);
glColor3f(1.0,1.0,0.0);
glutWireSphere(0.3, 19, 12);
glRotatef(rotate_1,0.0,1.0,0.0);
glTranslatef(1.0,0.0,0.0);
glutWireSphere(0.2, 19, 12);
glRotatef(rotate_2,0.0,1.0,0.0);
glTranslatef(0.4,0.0,0.0);
//glScalef(1.0,2.0,1.0);
glutWireSphere(0.1, 19, 12);
glutSwapBuffers();
glFlush();
}
void reShape(int w, int h){
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ( );
if (w <= h)
glOrtho (-1.5, 1.5, -1.5 * ( GLfloat ) h / ( GLfloat ) w, 1.5 * ( GLfloat ) h / ( GLfloat ) w, -10.0, 10.0 );
else
glOrtho (-1.5 * ( GLfloat ) w / ( GLfloat ) h, 1.5 * ( GLfloat ) w / ( GLfloat ) h, -1.5, 1.5, -10.0, 10.0);
glMatrixMode ( GL_MODELVIEW );
glLoadIdentity ( ) ;
}
void keyboard(unsigned char key, int x, int y)
{
switch(key) {
case 27:
exit(0);
break;
}
}
void mouse(int button, int state, int x, int y)
{
switch(button) {
case GLUT_LEFT_BUTTON:
exit(0);
break;
}
}
void idle(void){
// rotate_1++;
// rotate_2+=3;
// sleep(1);
// glutPostRedisplay();
}
void timer(int value){
rotate_1++;
rotate_2+=3;
glutPostRedisplay();
glutTimerFunc(30, timer, 1);
}
|