啊 工作好忙,学习进度好慢,难受啊。。。。
最近刚理解opengl一些基础,因为感觉很基础,所以也没上传~
代码放上来了。
转动控制在 数字按键上, 按8向上转,   2- down ,  4 left,6-right 
 
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define xpix 500
#define ypix 500
int winid;
void display(void)
{
  float i;
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  glPointSize(30);
  glPushMatrix();
   glLineWidth(2);
   glBegin(GL_QUADS);
  
    //left  , red+green=yellow
    glColor3f(0.5,0.5,0.0);
    glVertex3f(-25.0,25.0,25.0);
    glVertex3f(-25.0,25.0,-25.0);
    glVertex3f(-25.0,-25.0,-25.0);
    glVertex3f(-25.0,-25.0,25.0);
   
    //right  , red+blue=...
    glColor3f(0.5,0.0,0.7);
    glVertex3f(25.0,25.0,25.0);
    glVertex3f(25.0,-25.0,25.0);
    glVertex3f(25.0,-25.0,-25.0);
    glVertex3f(25.0,25.0,-25.0);
    //front  
    glColor3f(0.0,0.0,0.8);
    glVertex3f(25.0,25.0,25.0);
    glVertex3f(-25.0,25.0,25.0);
    glVertex3f(-25.0,-25.0,25.0);
    glVertex3f(25.0,-25.0,25.0);
   
    //back
    glColor3f(0.5,0.0,0.0);
    glVertex3f(25.0,25.0,-25.0);
    glVertex3f(25.0,-25.0,-25.0);
    glVertex3f(-25.0,-25.0,-25.0);
    glVertex3f(-25.0,25.0,-25.0);
   glEnd();
  glPopMatrix();
  glutSwapBuffers();
}
void init(void)
{
   glClearColor(0.1,0.0,0.0,0.0);
   glEnable(GL_DEPTH_TEST);
}
void reshape(int x,int y)
{
     float fa=30.0;
     glViewport(0,0,xpix,ypix);
     glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glOrtho(-80.0,80.0,-80.0,80.0,1.0,100.0);
      //left , right ,down , up , near,far ;
     glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      gluLookAt(0.0,0.0,fa, 0.0,0.0,1.0,  0.0,1.0,fa);
     
}
void hitkey(unsigned char key,int mousex,int mousey)
{
    static float fa=50.0,ang=0.0,rx=0.0,ry=0.0,rz=0.0,add=5.0;
    switch (key)
    {
       case 'q':
            glutDestroyWindow(winid);
            exit(0);
            break;
       case '8':
            if (rx<360.0) {rx+=add;} else {rx=0.0;}
            break;
       case '2':
            if (rx>0.0) {rx-=add;} else {rx=360.0;}
            break;
       case '4':
            if (ry<360.0) {ry+=add;} else {ry=0.0;}
            break;
       case '6':
            if (ry>0.0) {ry-=add;} else {ry=360.0;}
            break;
    }
    glLoadIdentity();
    gluLookAt(0.0,0.0,fa, 0.0,0.0,1.0,  0.0,1.0,fa);
    glRotatef(rx,-1.0,0.0,0.0);
    glRotatef(ry,0.0,-1.0,0.0);
    glRotatef(rz,0.0,0.0,-1.0);
    glutPostRedisplay();
}
int main(int argc,char *argv[])
{
   glutInit(&argc,argv);
   glutInitWindowPosition(0,0);
   glutInitWindowSize(xpix,ypix);
   glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH);
   winid=glutCreateWindow("r to change , q to quit");
   init();
   glutDisplayFunc(display);
   glutReshapeFunc(reshape);
   glutKeyboardFunc(hitkey);
   glutMainLoop();
   return 0;
} |
|