实心物体创建

代码如下:

#include <windows.h>
//#include <GLUT/glut.h>
#include <GL/glut.h>
#include <math.h>
#include <iostream>
using namespace std;

#define GL_PI 3.1415f

void RenderScene()
{
    GLfloat x,y,angle;
    int iPivot = 1;
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    GLboolean bCull = true;
    GLboolean bDepth = true;
    GLboolean bOutline = true;
    if(bCull)
        glEnable(GL_CULL_FACE);
    else
        glDisable(GL_CULL_FACE);

    if(bDepth)
        glEnable(GL_DEPTH_TEST);
    else
        glDisable(GL_DEPTH_TEST);

    if(bOutline)
        glPolygonMode(GL_BACK,GL_LINE);
    else
        glPolygonMode(GL_BACK,GL_FILL);

    glPushMatrix();
    glRotatef(45.0f,1.0f,0.0f,0.0f);
    glRotatef(45.0f,0.0f,1.0f,0.0f);

    glBegin(GL_TRIANGLE_FAN);

        glVertex3f(0.0f,0.0f,75.0f);

        for(angle = 0.0f;angle < (2.0*GL_PI);angle += (GL_PI)/8.0)
        {
            x = 50.0f*sin(angle);
            y = 50.0f*cos(angle);

            if((iPivot %2)==0)
                glColor3f(0.0f,0.0f,1.0f);
            else
                glColor3f(1.0f,0.0f,0.0f);

            iPivot++;
            glVertex2f(x,y);
        }
    glEnd();

    glBegin(GL_TRIANGLE_FAN);

    glVertex2f(0.0f,0.0f);

    for(angle = 0.0f;angle < (2.0f*GL_PI);angle += (GL_PI/8.0f))
    {
        x = 50.0f*sin(angle);
        y = 50.0f*cos(angle);

        if((iPivot %2)==0)
            glColor3f(0.0f,0.0f,1.0f);
        else
            glColor3f(1.0f,0.0f,0.0f);

        iPivot++;
        glVertex2f(x,y);
    }
    glEnd();

    glPopMatrix();
    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);
    glShadeModel(GL_FLAT);
    glFrontFace(GL_CW);
}


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;
}
态度决定高度,细节决定成败,
原文地址:https://www.cnblogs.com/lxk2010012997/p/4198864.html