vc6.0+opengl动态绘制五角星


实现一个带参数控制五角星形状的绘制函数,并在不同位置绘制多个大小、颜色不同的五角星。(要求采用随机数生成大小和颜色,大小需要限定在一个范围内,每帧五角星也发生变化) 在VC6.0的环境下利用opengl绘制五角星,半径大小和颜色用了随机数,所以每个五角星的大小颜色实现了变化,也可以删除变成静态的,代码里有详细注释,可以自己修改
资源截图
代码片段和文件信息
#include 

#include 
#include 
#include 
#include 
#include 
#include 

//添加这3条语句
#pragma comment (lib “opengl32.lib“)  
#pragma comment (lib “glu32.lib“)  
#pragma comment (lib “glaux.lib“)  

#pragma comment( linker “/subsystem:“windows“ /entry:“mainCRTStartup““ ) //这句是不让控制台窗体出现,如果想要出现,去掉即可。

const GLfloat Pi = 3.1415926536f;  //定义Pi值

float X[5] Y[5];  //用数组声明5组坐标,外圈坐标
float X1[5] Y1[5];//内圈坐标
int R=0 yd=0;  //定义半径偏转角度

void init()
{
      glClearColor(0.00.00.01.0);//黑色背景
 // glClearColor(1.0 1.0 1.0 0.0);  //设置背景颜色
   
}

//绘制图形函数
float r=1g=0b=0x=0y=0;

//绘制图形函数
void CALLBACK draw()
{
     glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(rgb); //红色
    glBegin(GL_LINE_LOOP);  //按照顺序开始画线,AI->IB->BG->...->FA
        glVertex2f(X[0] Y[0]);
glVertex2f(X1[0] Y1[0]);
glVertex2f(X[1] Y[1]);
glVertex2f(X1[1] Y1[1]);
        glVertex2f(X[2] Y[2]);
glVertex2f(X1[2] Y1[2]);
glVertex2f(X[3] Y[3]);
        glVertex2f(X1[3] Y1[3]);
        glVertex2f(X[4] Y[4]);
        glVertex2f(X1[4] Y1[4]);
     glEnd();

     glFinish();//强制之前的绘图函数执行
}

void CALLBACK change()
{
int i; 
srand(time(NULL)); //srand(int)来设种子
//i=rand()%200+1;/* i是[1,200]区间内的一个整数 */

i=rand()%200+20;
R = i ;   //半径为一个随机数,也可以删掉,修改

i=rand()%200+20;
yd=i;   //偏转角度

i=rand()%200;
r = i / 200.0f;//RGB颜色随机变化
   
i=rand()%200;
g = i / 200.0f;

i=rand()%200;
b = i / 200.0f;
x=i+150;
y=i+400;
 for (int q = 0; q <= 4; q++)
    {
        //在外圆上初始化5个坐标点
        X[q] = x+R*cos((q*2)*Pi / 5+yd);
        Y[q] = y+R*sin((q*2)*Pi / 5+yd);
    }
 for(int w = 0;w <= 4; w++)
 {
 //在外圆上初始化5个坐标点
 X1[w] = x+0.4*R*cos((w*2)*Pi / 5+72*Pi/360+yd);
     Y1[w] = y+0.4*R*sin((w*2)*Pi / 5+72*Pi/360+yd);

 }
draw();         
}

//主函数
void main()
{
    auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
    auxInitPosition(100100700700);
    auxInitWindow(“CGOpenGL“);

    init();
auxIdleFunc(change);//一定要在auxMainLoop前面
    auxMainLoop(draw);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2302  2018-05-09 17:59  111111.cpp

     文件       3365  2018-05-09 15:36  111111.dsp

     文件        512  2018-05-09 15:37  111111.dsw

     文件      41984  2018-05-09 17:59  111111.ncb

     文件      48640  2018-05-09 17:59  111111.opt

     文件       1832  2018-05-09 17:37  111111.plg

     文件     241721  2018-05-09 17:37  111Debug111.exe

     文件     345680  2018-05-09 17:37  111Debug111.ilk

     文件      17566  2018-05-09 17:37  111Debug111.obj

     文件    3701596  2018-05-09 17:21  111Debug111.pch

     文件     525312  2018-05-09 17:37  111Debug111.pdb

     文件     148480  2018-05-09 17:37  111Debugvc60.idb

     文件      77824  2018-05-09 17:37  111Debugvc60.pdb

     目录          0  2018-05-09 17:37  111Debug

     目录          0  2018-05-09 17:59  111

----------- ---------  ---------- -----  ----

              5156814                    15


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)