• openGL画五角星


    开发环境是codeblocks+glut,其中glut库的作用是封装windows程序的消息循环等标准windows程序结构,屏蔽与openGL开发无关的复杂性(在后面的代码可以看到,在程序模版里面放置一些固定的封装好的函数调用就可以了),使用户专注于openGL本身。这个开发环境既轻量又容易配置,只要配置好环境,openGL还是很容易上手的。具体的配置可参考:

    http://www.cnblogs.com/lycheng/archive/2011/09/10/2173419.html

    下面分别使用GL_LINE_LOOP和GL_LINES两种模式绘制五角星。

    效果图如下:

    在本文开头环境下的完整代码:

    #include<windows.h>
    #include<GL/glut.h>
    #include<cmath>
    
    const GLfloat R=0.5f;
    const GLfloat Pi=3.1415926536f;
    
    static void myDisplay(void)
    {
        glClear(GL_COLOR_BUFFER_BIT);
    
        glBegin(GL_LINE_LOOP);
        for(int i=0;i<360;i++)
        {
            glVertex2f(R*cos(i/360.0*2.0*Pi)-0.5,R*sin(i/360.0*2.0*Pi)+0.5);
        }
    
        float aa=cos(54.0/360.0*2*Pi);
        float bb=aa*tan(36.0/360.0*2*Pi);
        float cc=sin(54.0/360.0*2*Pi)-bb;
    
        for(int i=0;i<360;i+=72)
        {
            glVertex2f(R*cos(i/360.0*2.0*Pi)-0.5,R*sin(i/360.0*2.0*Pi)+0.5);
            glVertex2f(cc*R*cos((i+36)/360.0*2.0*Pi)-0.5,cc*R*sin((i+36)/360.0*2.0*Pi)+0.5);
        }
        glEnd();
    
        glBegin(GL_LINES);
        float pta[5],ptb[5];
        for(int i=0;i<5;i+=1)
        {
            pta[i]=R*cos(i/5.0*2.0*Pi);
            ptb[i]=R*sin(i/5.0*2.0*Pi);
        }
        glVertex2f(pta[0]+0.5,ptb[0]-0.5);
        glVertex2f(pta[2]+0.5,ptb[2]-0.5);
        glVertex2f(pta[0]+0.5,ptb[0]-0.5);
        glVertex2f(pta[3]+0.5,ptb[3]-0.5);
        glVertex2f(pta[1]+0.5,ptb[1]-0.5);
        glVertex2f(pta[3]+0.5,ptb[3]-0.5);
        glVertex2f(pta[1]+0.5,ptb[1]-0.5);
        glVertex2f(pta[4]+0.5,ptb[4]-0.5);
        glVertex2f(pta[2]+0.5,ptb[2]-0.5);
        glVertex2f(pta[4]+0.5,ptb[4]-0.5);
    
        glEnd();
    
        glFlush();
    }
    
    int main(int argc, char *argv[])
    {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
        glutInitWindowPosition(100,100);
        glutInitWindowSize(400,400);
        glutCreateWindow("GLUT Shapes");
    
        glutDisplayFunc(&myDisplay);
    
        glutMainLoop();
    
        return EXIT_SUCCESS;
    }
    分享到: 更多
    友荐云推荐
  • 相关阅读:
    mysql 日志
    mysql 事务中的锁
    mysql 事务的日志
    mysql 核心事务特性
    mysql 断电导致表打不开解决方案
    mysql 数据库逻辑升级
    mysql innodb存储引擎的表空间
    IDEA常用代码模板
    springcloud-GateWay常用的Predicate
    springcloud-GateWay配置动态路由
  • 原文地址:https://www.cnblogs.com/eternalwt/p/2934897.html
Copyright © 2020-2023  润新知