OpenGL从1.0开始--绘制规则多面体
我们之前已经讲解了很多二维图元的绘制,终于我们现在有了基础来绘制三维图元了。
幸运的是,某些标准的形体–五种规则多面体–由GLUT库中的子程序预先定义。这些多面体也称为柏拉图式实体,由它的每一面是一个单位规则多边形来标识。
GLUT中总共有10个函数用来生成这些实体
glutWireTetrahedron();//规则三棱锥线框图glutSolidTetrahedron();//规则三棱锥实体图glutWireCube(1.0);//规则立方体线框图glutSolidCube(1.0);glutWireOctahedron();//规则八面体线框图glutSolidOctahedron();glutWireDodecahedron();//规则十二面体线框图glutSolidOctahedron();glutWireIcosahedron();//规则二十面体线框图glutSolidIcosahedron();
我们看一个示例代码:
#include
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();
}
类似地我们可以看看正方体实体图效果:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
