opengl 裁剪平面
2014-06-08 15:51
381 查看
原帖地址:http://blog.sina.com.cn/s/blog_5ff6097b0100xqvr.html
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-5 经过两个裁剪平面裁剪的线框球体:clip.c
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 裁剪后的线框球体 |
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; }
相关文章推荐
- OpenGL: 中平截头体六个裁剪平面方程的求解
- OpenGL之裁剪平面
- OpenGL学习09_裁剪平面ClipPlane
- OpenGL编程指南9:裁剪平面+glPushMatrix和glPopMatrix矩阵栈顶操作
- opengl入门系列3-裁剪平面
- OpenGL使用裁剪平面
- NeHe的OpenGL教程2(Bang翻译Delphi版)-如何绘制平面图形
- 【学习OpenGL】(二)——绘制矩形(视口与裁剪区)
- OpenGL中的平面圆绘制与贴图
- 【OpenGL4.0】GLSL-Flat Shading平面着色
- OPENGL—编码裁剪(Cohen-Sutherland)法裁剪图
- OpenGL学习日记-2014.11.26--简单裁剪
- 在Ogre中设置固定流水线的用户自定义裁剪平面的方法
- [OpenGL]图形的绘制——平面多面体
- 三维裁剪(OpenGL)glClipPlane(GLenum plane, const GLdouble *equation)
- OpenGL.裁剪算法
- OpenGL 透视投影 齐次裁剪空间 深度缓存
- OpenGL(二)图形绘制之平面多面体的绘制
- 【OpenGL4.0】GLSL-Flat Shading平面着色
- [OpenGL]从零开始写一个Android平台下的全景视频播放器——2.1 使用GLSurfaceView和MediaPlayer播放一个平面视频(上)