• opengl 裁剪平面


    原帖地址:http://blog.sina.com.cn/s/blog_5ff6097b0100xqvr.html

    1. void glClipPlane(GLenum plane, const GLdouble *equation); 

        定义一个裁剪平面。equation参数指向平面方程Ax + By + Cz + D = 0的4个系数。equation=(0,-1,0,0),前三个参数(0,-1,0)可以理解为法线向下,只有向下的,即Y<0的才能显示,最后一 个参数0表示从z=0平面开始。这样就是裁剪掉上半平面。相应的equation=(0,1,0,0)表示裁剪掉下半平面,equation= (1,0,0,0)表示裁剪掉左半平面,equation=(-1,0,0,0)表示裁剪掉右半平面,equation=(0,0,-1,0)表示裁剪掉 前半平面,equation=(0,0,1,0)表示裁剪掉后半平面

    裁剪平面的代码例子

    示例3-5是经过两个裁剪平面裁剪的线框球体,裁去了3/4体积,如图3-23所示。


     
    图3-23 裁剪后的线框球体

    示例程序3-5 经过两个裁剪平面裁剪的线框球体:clip.c

    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);  
    }  
    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);  
    glutMainLoop();  
    return 0;  
    } 
  • 相关阅读:
    出现 could not open jvm.cfg 的解决办法
    powerdesigner相关概念理解
    UML建模类图
    LAMP环境折腾
    ThinkPHP学习笔记1
    ubuntu14在kDE界面下的关于eclipse提示框黑色背景的修改!
    LAMP环境安装与apache配置
    Unix网络编程---第四次作业
    Unix网络编程---第三次作业
    Unix网络编程---第二次作业
  • 原文地址:https://www.cnblogs.com/dragon2012/p/3776325.html
Copyright © 2020-2023  润新知