OpenGL从1.0开始--绘制规则多面体

来源:互联网 发布:java配置log4j 编辑:程序博客网 时间:2024/05/15 04:23

我们之前已经讲解了很多二维图元的绘制,终于我们现在有了基础来绘制三维图元了。
幸运的是,某些标准的形体–五种规则多面体–由GLUT库中的子程序预先定义。这些多面体也称为柏拉图式实体,由它的每一面是一个单位规则多边形来标识。
GLUT中总共有10个函数用来生成这些实体

    glutWireTetrahedron();//规则三棱锥线框图    glutSolidTetrahedron();//规则三棱锥实体图    glutWireCube(1.0);//规则立方体线框图    glutSolidCube(1.0);    glutWireOctahedron();//规则八面体线框图    glutSolidOctahedron();    glutWireDodecahedron();//规则十二面体线框图    glutSolidOctahedron();    glutWireIcosahedron();//规则二十面体线框图    glutSolidIcosahedron();

我们看一个示例代码:

#include <gl/glut.h>GLsizei winWidth = 500, winHeight = 500;static void init(void){    glClearColor(1.0, 1.0, 1.0, 0.0);   }void displayWirePolyhedra(void){    glClear(GL_COLOR_BUFFER_BIT);    glColor3f(0.0, 0.0, 1.0);    gluLookAt(5.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);    glScalef(1.5, 2.0, 1.0);    glutWireCube(1.0);//绘制立方体线框图    glFlush();}void winReshapeFcn(GLint newWidth, GLint newHeight){    glViewport(0, 0, (GLsizei)newWidth, (GLsizei)newHeight);    glMatrixMode(GL_PROJECTION);    glLoadIdentity();    glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 20.0);    glClear(GL_COLOR_BUFFER_BIT);}void main(int argc, char**argv){    glutInit(&argc, argv);    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);    glutInitWindowPosition(100, 100);    glutInitWindowSize(winWidth, winHeight);    glutCreateWindow("Wire-Frame Example");    init();    glutDisplayFunc(displayWirePolyhedra);    glutReshapeFunc(winReshapeFcn);    glutMainLoop();}

这里写图片描述
类似地我们可以看看正方体实体图效果:
这里写图片描述

原创粉丝点击