• 点画填充多边形


    代码如下:

    #include <windows.h>
    //#include <GLUT/glut.h>
    #include <GL/glut.h>
    #include <math.h>
    #include <iostream>
    using namespace std;
    
    #define GL_PI 3.1415f
    
    GLubyte fire[]={
        0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0xc0,
        0x00,0x00,0x01,0xf0,
        0x00,0x00,0x07,0xf0,
        0x0f,0x00,0x1f,0xe0,
        0x1f,0x80,0x1f,0xc0,
        0x0f,0xc0,0x3f,0x80,
        0x07,0xe0,0x7e,0x00,
        0x03,0xf0,0xff,0x80,
        0x03,0xf5,0xff,0xe0,
        0x07,0xfd,0xff,0xf8,
        0x1f,0xfc,0xff,0xe8,
        0xff,0xe3,0xbf,0x70,
        0xde,0x80,0xb7,0x00,
        0x71,0x10,0x4a,0x80,
        0x03,0x10,0x4e,0x40,
        0x02,0x88,0x8c,0x20,
        0x05,0x05,0x04,0x40,
        0x02,0x82,0x14,0x40,
        0x02,0x40,0x10,0x80,
        0x02,0x64,0x1a,0x80,
        0x00,0x92,0x29,0x00,
        0x00,0xb0,0x48,0x00,
        0x00,0xc8,0x90,0x00,
        0x00,0x85,0x10,0x00,
        0x00,0x03,0x00,0x00,
        0x00,0x00,0x10,0x00,
    };
    
    
    void RenderScene()
    {
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
        glBegin(GL_POLYGON);
            glVertex2f(-20.0f,50.0f);
            glVertex2f(20.0f,50.0f);
            glVertex2f(50.0f,20.0f);
            glVertex2f(50.0f,-20.0f);
            glVertex2f(20.0f,-50.0f);
            glVertex2f(-20.0f,-50.0f);
            glVertex2f(-50.0f,-20.0f);
            glVertex2f(-50.0f,20.0f);
        glEnd();
        glutSwapBuffers();
    
    }
    
    void ChangeSize(GLsizei w,GLsizei h)
    {
        if(h==0)
            h = 1;
    
        GLfloat aspectRatio = (GLfloat)w/(GLfloat)h;
    
        glViewport(0,0,w,h);
    
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
    
        if(w<=h)
            glOrtho(-100,100,-100/aspectRatio,100/aspectRatio,100.0,-100.0);
        else
            glOrtho(-100*aspectRatio,100*aspectRatio,-100,100,100.0,-100.0);
    
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
    
    }
    
    void SetupRC()
    {
        glClearColor(0.0f,0.0f,0.0f,1.0f);
        glColor3f(1.0f,0.0f,0.0f);
        glEnable(GL_POLYGON_STIPPLE);
        glPolygonStipple(fire);
    }
    
    
    int main(int argc, char *argv[])
    {
       glutInit(&argc,argv);
       glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
       glutInitWindowSize(800,600);
       glutCreateWindow("Simple");
    
       glutDisplayFunc(RenderScene);
       glutReshapeFunc(ChangeSize);
    
       SetupRC();
       glutMainLoop();
       return 0;
    }
    态度决定高度,细节决定成败,
  • 相关阅读:
    半主机模式和_MICROLIB 库
    工作中常用的git命令
    Mybatis延迟加载参数配置
    JUnit展示图形化测试结果
    可读、可维护、可扩展,原则、模式与重构
    乐观锁和悲观锁
    HashMap实现原理和底层数据结构?
    视图有啥用?
    单例模式常见有哪几种?
    RPC服务和HTTP服务的区别
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/4199295.html
Copyright © 2020-2023  润新知