• 大小: 400KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: OpenGL  房子    月亮  

资源简介

OpenGL编程实现绘制房子,树,月亮,3D,可以进行旋转

资源截图

代码片段和文件信息

#include 
#include
#include
#include
#include 
//---------------喷泉相关------------------------------------
struct particle
{
  float t;       // 粒子的寿命
  float v;       // 粒子的运动速度
  float d;       // 粒子的运动方向
  float x y z; // 粒子的位置坐标
  float xd zd;  // X 和 Z 方向上的增量
  char type;     // 粒子的状态(移动或淡化)
  float a;       // 粒子淡化的 alpha 值
  struct particle *next *prev;
};
struct particle *fn=NULL;   /* Fountains 链表结构*/
int timep=17;
//--------------------------------------------------------------------
float flag=1.0;
GLfloat theta=3.1415*0.2fai=3.1415*0.7;
GLfloat P0X=120.0*sin(theta)*sin(fai)P0Y=120*cos(fai)P0Z=120.0*cos(theta)*sin(fai);

int windowwwindowh;                    //窗口的宽和高
static GLuint texName;                  //纹理组的名称
//依序为月亮、侧面、地面
GLuint drawwalllistmoonlistrooflisttreeliststoolliststartList;                    //贴环境纹理的显示列表
   GLUquadricObj *qobj;
//------------------------------------------------------------

GLfloat ctrlpoints[4][4][3];

GLfloat texpts[2][2][2] = {{{0.7 0.7} {0.7 1}} 
{{1 0.7} {1 1}}};
//-----------------------喷泉相关-----------------------------
void AddParticles()
{
  struct particle *tempp;
  int i;
  
    for (i=0; i<15; i++)
    {
      tempp = (struct particle *)malloc(sizeof(struct particle));
      if (fn) fn->prev = tempp;
      tempp->next = fn;
      fn = tempp;
  
      tempp->t = -9.9;
      tempp->v = (float)(rand() % 200000)/100000+1; // 速度
      tempp->d = (float)(rand() % 400)/100-2;     // 方向角度
      // 开始运动的坐标
      tempp->x = 0;
      tempp->y = 0;
      tempp->z = i*2;
      tempp->xd = cos((tempp->d*3.14159)/180)*tempp->v/4;
      tempp->zd = sin((tempp->d*3.14159)/180)*tempp->v;
      tempp->type = 0; 
      tempp->a = 1; 
}
}
//  移动粒子
void MoveParticles()
{
  struct particle *tempp;

  {
    tempp = fn; 
    while (tempp)
    {
      if (tempp->type == 0) // 如果粒子是运动的
      {
        tempp->x += tempp->xd;
        tempp->z += tempp->zd;
        tempp->y = -(9.8*(tempp->t*tempp->t/4))/2+122.5; // 计算高度
        tempp->t += 0.1; // 寿命递增
        if (tempp->y < 0) tempp->type = 1; // 如果粒子落到地上,则粒子淡化
      }
      else // 粒子落到地上
      {
        tempp->y = -(9.8*(tempp->t*tempp->t/4))/2+122.5; 
      }
      tempp = tempp->next; //进行下一个粒子的计算
    }
  }
}
//  删除粒子
void DeleteParticles()
{
  struct particle *tempp *temp1;

  {
    tempp = fn;
    while (tempp)
    {
      if ((tempp->type == 1) && (tempp->a <= 0)) // 粒子死亡
      {
        // 删除粒子
        temp1 = tempp->prev;
        tempp->prev->next = tempp->next;
        if (tempp->next) tempp->next->prev = temp1;
        free(tempp);
        tempp = temp1;
      }
      tempp = tempp->next;
    }
  }
}

void timf(int value)
{
  glutPostRedisplay();
  glutTimerFunc(timep timf 0);
}
//-------------------------------------------------------------
void readimage(char

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

     文件     196664  2005-06-12 17:52  source code\door.bmp

     文件     196664  2005-06-13 00:05  source code\floor.bmp

     文件     196664  2005-06-12 15:10  source code\moon.bmp

     文件      20534  2005-06-18 23:05  source code\Pond.cpp

     文件      49208  2005-06-12 16:34  source code\roof.bmp

     文件      49208  2005-06-12 19:05  source code\starlow.bmp

    ..A.SH.     21504  2005-06-18 23:06  source code\Thumbs.db

     文件     227071  2007-04-11 16:16  月色.pdf

     目录          0  2005-06-18 23:06  source code

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

               957735                    10


评论

共有 条评论