我是靠谱客的博主 勤劳皮带,最近开发中收集的这篇文章主要介绍OpenGL从1.0开始--绘制规则多面体,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们之前已经讲解了很多二维图元的绘制,终于我们现在有了基础来绘制三维图元了。
幸运的是,某些标准的形体–五种规则多面体–由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();
}

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

最后

以上就是勤劳皮带为你收集整理的OpenGL从1.0开始--绘制规则多面体的全部内容,希望文章能够帮你解决OpenGL从1.0开始--绘制规则多面体所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部