基于opengl的粒子系统——模拟火焰内容摘要:
t slowdown=。 float xspeed。 // X 轴速度 float yspeed。 // Y 轴速度 float zoom=。 int a。 float xg1。 float yg1=。 GLuint loop。 // 循环变量 GLuint col=5。 // 初始颜色 GLuint texture[1]。 // 创建数组存储纹理 typedef struct // 创建结构体 { bool active。 // float life。 // 粒子生命周期 float fade。 // 消失的速度 float r。 float g。 float b。 float x。 // 坐标 float y。 // 坐标 float z。 // 坐标 float xi。 float yi。 float zi。 float xg。 // X 轴加速度 float yg。 // Y 轴加速度 float zg。 // Z 轴加速度 } particles。 particles particle[MAX_PARTICLES]。 // 创建粒子数组 static GLfloat colors[8][3]= // 颜色数组 { {,},{,},{,},{,}, {,}, {,}, {,},{,}, }。 AUX_RGBImageRec *LoadBMP(char *Filename) // 载入位图图像 { FILE *File=NULL。 if (!Filename) { return NULL。 } File=fopen(Filename,r)。 if (File) { fclose(File)。 return auxDIBImageLoad(Filename)。 } return NULL。 } int LoadGLTextures() // 载入位图 (调用上面的代码 )并转换成纹理 { int Status=FALSE。 AUX_RGBImageRec *TextureImage[1]。 memset(TextureImage,0,sizeof(void *)*1)。 printf(q 键 xg1+=。 ( X 轴加速度) 荧光黄色 \n)。 printf(w 键 yg1+=。 ( X 轴加速度) 玫瑰粉 \n)。 printf(a 键 xg1=。 ( X 轴加速度) 荧光绿 \n)。 printf(s 键 yg1=。 ( X 轴加速度) 亮紫 \n)。 printf(z 键 yg1=。 ( X 轴加速度) 藕荷色 \n)。 printf(\n\n)。 printf(***Choose the number of the shape***\n)。 //选择纹理 printf(1. Circle\t2. Pentagram\t3. Triangle\n\n)。 printf(4. Flame\t5. fourpointed Star\t6. Hexagon\n\n)。 scanf(%d,amp。 a)。 if(a6) { printf(****Tip:Error!!!Please reenter after exit!!****\n\n)。 exit(0)。 } switch(a) { case 1: { if (TextureImage[0]=LoadBMP()) { Status=TRUE。 glGenTextures(1, amp。 texture[0])。 glBindTexture(GL_TEXTURE_2D, texture[0])。 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)。 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR)。 glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]sizeX, TextureImage[0]sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]data)。 } } break。 case 2: { if (TextureImage[0]=LoadBMP()) { Status=TRUE。 glGenTextures(1, amp。 texture[0])。 glBindTexture(GL_TEXTURE_2D, texture[0])。 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)。 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR)。 glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]sizeX, TextureImage[0]sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]data)。 } }break。 case 3: { if (TextureImage[0]=LoadBMP()) { Status=TRUE。 glGenTextures(1, amp。 texture[0])。 glBindTexture(GL_TEXTURE_2D, texture[0])。 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)。 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR)。 g。基于opengl的粒子系统——模拟火焰
相关推荐
工具 ,等等都能定义一个对它来说是重要的词汇 ,以来自若干的其他字汇的 URIrefs 作为它的词汇的部份。 除此之外,有时 一个组织将会以字汇的 namespace URLref作为提供关于那一个字汇的进一步的资讯网络资源的网址。 在 RDF陈述中的对象可能是 URIrefs, 或者是由字符串描述的常量 (被称为文字的 ),为了要表现特定类型的值。 文字的不可能被当作
方案书 第 4 页 11 MAX32 1 用于电平转换 总体介绍 所谓 MP3 播放,就是使用 MP3 播放器对 MP3 文件进行实时的解压缩 (解码 ),这样,高品质的 MP3 音乐就播放出来了。 具有 MP3 播放功能的指纹机中就内嵌了 MP3 播放 器,可以播放格式为 Layer III 的 mp3 语音文件。 其播放的方式类似定时响铃,可以设置八个时间段,当到达所设置的时间段时,
微控制器。 他们还可以 在 很多电器设备 中 找到,如洗衣机,微波炉和电话。 制造商们通常生 产微控制器的特殊版本,以帮助目标系统的硬件和软件开发。 起初 这些措施包括 EPROM 的 顶部 有一个 “ 窗口 ” ,可以通过紫外线擦除它的程序存储器, 以便 重新编程( “ 烧写 ” )和测试周期。 自 1998 年以来, EPROM 的版本变得 罕见,并已 被 EEPROM 和 FLASH 这
ist_height / max_val)。 //要绘制的高度 rectangle(hist_img, Point(i*scale, hist_height 1), Point((i + 1)*scale 1, hist_height intensity), CV_RGB(255, 255, 255))。 } dstImg = hist_img。 } int CrackDetection:
[x] += fValue。 } // 频带系数 for (i = 0。 i nHalfH。 i++) { pData[i][x] *= fRadius。 pData[nHalfH + i][x] /= fRadius。 } } } delete[] pData。 delete[] pRow。 delete[] pColumn。 } } } // 二维离散小波恢复(单通道浮点图像) void
源蜂鸣器驱动需要 130mA,所以就要加 9012NPN 三极管来获得大电流。 9012 的常温最大输出 500mA 电流。 6 本设计的不足和反思 最为一个温度监控系统,应该加上按钮,当温度异常,蜂鸣器 报警时,按下复位按钮,蜂鸣器停止报警,但是红灯继续闪烁。 当故障排除后,红灯灭,系统恢复正常。 如果一分钟后故障没有排除,蜂鸣器再次报警。 检测的实时温度应该通过 UART 上传到上位机