Yurttas/PL/OOL/Cplusplus/oldies/f/swhsu/swhsu/opengl/codehtml/clip.html

From ZCubes Wiki
Jump to navigation Jump to search

Header image


Yurttas PL OOL Cplusplus oldies f swhsu swhsu opengl codehtml images mm spacer.gif

Yurttas PL OOL Cplusplus oldies f swhsu swhsu opengl codehtml images mm spacer.gif

Yurttas PL OOL Cplusplus oldies f swhsu swhsu opengl codehtml images mm spacer.gif


    home

Example


clip_00.c (download)

Yurttas PL OOL Cplusplus oldies f swhsu swhsu opengl codehtml images clip.jpg



/*
 *  clip.c
 *  This program demonstrates arbitrary clipping planes.
 */

#include <GL/glut.h>
#include <stdlib.h>

void init(void) {
  glClearColor(0.0,
               0.0,
               0.0,
               0.0);
  glShadeModel(GL_FLAT);
}

void display(void){
  GLdouble eqn[4]={0.0, 1.0, 0.0, 0.0};
  GLdouble eqn2[4]={1.0, 0.0, 0.0, 0.0};

  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(1.0,
            1.0,
            1.0);
  glPushMatrix();
  glTranslatef(0.0,
               0.0,
               -5.0);
  glClipPlane(GL_CLIP_PLANE0,
              eqn);
  glEnable(GL_CLIP_PLANE0);
  glClipPlane(GL_CLIP_PLANE1,
              eqn2);
  glEnable(GL_CLIP_PLANE1);
  glRotatef(90.0,
            1.0,
            0.0,
            0.0);
  glutWireSphere(1.0,
                 20,
                 16);
  glPopMatrix();
  glFlush();
}

void reshape(int w, int h) {
  glViewport(0,
             0,
             (GLsizei)w,
             (GLsizei)h);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(60.0,
                 (GLfloat)w/(GLfloat)h,
                 1.0,
                 20.0);
  glMatrixMode(GL_MODELVIEW);
}

void keyboard(unsigned char key, int x, int y) {
  switch(key){
    case 27:
      exit(0);
      break;
  }
}

int main(int argc, char* argv[]) {
  glutInit(&argc,
           argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(500,
                     500);
  glutInitWindowPosition(100,
                         100);
  glutCreateWindow(argv[0]);
  init();
  glutDisplayFunc(display);
  glutReshapeFunc(reshape);
  glutKeyboardFunc(keyboard);
  glutMainLoop();
  return 0;
}