windows visual studio 基于openGL的粒子系统设计

这是我上计算机三维动画的时候的期末作业,自己动手做的能实现粒子系统的效果,同时代码很简单,

只有一个cpp文件,很适合想要理解粒子系统原理的童鞋,童鞋可以拷贝代码修改,从而加深粒子系统的概念理解

所以的东西均为原创,希望自己能写出更多的简单而又全的例子帮大家更好的理解计算机的中很多看似复杂的东西

希望大家多多支持我

首先上效果图


下面是代码,带有注释(PS:如果环境不会配置的童鞋可以查看我博客的另外的文章,有专门描述如何搭建windows visual studio openGL的开发环境)

stdafx.h

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//


#pragma once


#include <windows.h>
#include "targetver.h"
#include <iostream>
#include <stdio.h>
#include <tchar.h>
#include <gl/GLU.h>
#include <gl/GL.h>
#include <gl/glut.h>


// TODO: 在此处引用程序需要的其他头文件



MMParcticle.cpp

#include "stdafx.h"


#define MAX_PARTICLES 500
#define RANDX rand()%20-10.0f // 粒子发射器X轴随机位置
#define RANDZ rand()%20-10.0f //粒子发射器Z轴随机位置


// 粒子系统参数
float emmiterY = 10.0f;
float emmiterX = 0.0f;
float emmiterZ = 0.0f;


float slowdown = 1.0f; // 加速减速因子
float xSpeed;
float ySpeed;
float zoom = -10.0f;


GLuint loop;
GLuint col;
GLuint delay;


// 相机移动参数
float angle = 0.0f;
float lx=0.0f,lz=-1.0f;
// XZ position of the camera
float x=0.0f,z=5.0f;


// 粒子的结构体
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;
float yg;
float zg;
}particles;


// 粒子数组
particles particle[MAX_PARTICLES];
// 粒子颜色
static GLfloat colors[12][3]=
{
{1.0f,0.5f,0.5f},{1.0f,0.75f,0.5f},{1.0f,1.0f,0.5f},{0.75f,1.0f,0.5f},

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值