您的位置:首页 > 运维架构

opengl入门系列3-裁剪平面

2014-09-16 09:22 260 查看
#include <stdio.h>

#include <GL/glut.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)

{

    //printf("Hello World!\n");

    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;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: