1 Star 7 Fork 0

陈一墉 / 整花活_粒子

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
main.c 1.82 KB
一键复制 编辑 原始数据 按行查看 历史
陈一墉 提交于 2024-04-27 12:08 . 拆分main.c成多个文件
#include "include.h"
Particle particles[1024 * 16]; // 懒得去malloc了 反正半中间还有新加粒子
GtkWidget *drawing_area; // 绘图区域指针
float xa_g = 0; // 环境重力
float ya_g = 0; // 环境重力
int par_num = PAR_NUM; // 粒子数量
pthread_mutex_t th_mutex[TH_MAX]; // 计算加速度线程 同步 互斥锁
pthread_cond_t th_cond[TH_MAX]; // 计算加速度线程 同步 信号
volatile int th_flag[TH_MAX]; // 计算加速度线程 同步 标志
pthread_mutex_t mutex0 = PTHREAD_MUTEX_INITIALIZER; // 计算速度位置线程 同步 互斥锁
pthread_cond_t cond0 = PTHREAD_COND_INITIALIZER; // 计算速度位置线程 同步 信号
volatile int flag0 = 0; // 计算速度位置线程 同步 标志
volatile unsigned int run_cnt0 = 0; // 计算速度位置线程 计数
int th_num = TH_NUM;
long new_time, old_time = 0;
gboolean update_fps(gpointer data)
{
struct timeval currentTime;
float time_dx;
float accurate_fps;
gettimeofday(&currentTime, NULL); // 获取当前时间
new_time = currentTime.tv_sec * 1000 + currentTime.tv_usec / 1000; // 计算毫秒
if (old_time == 0) // 如果时第一次运行
{
old_time = new_time - 1000;
}
time_dx = (float)(new_time - old_time) / 1000; // 计算两次之间的时间
accurate_fps = run_cnt0 / time_dx;
printf("fps:%03.1f\n", accurate_fps);
run_cnt0 = 0;
old_time = new_time;
return G_SOURCE_CONTINUE;
}
int main(int argc, char *argv[])
{
if (argc >= 2)
{
th_num = atoi(argv[1]); // 从命令行参数中获取线程数量
}
printf("th_num:%d\n", th_num);
par_num -= par_num % th_num; // 根据线程数量调整参数数量
par_init(); // 初始化参数
gtk_ui_init(argc, argv); // 主UI初始化
thread_init(); // 多线程初始化
gtk_main(); // 进入GTK主循环
return 0;
}
C
1
https://gitee.com/cyyforchenyiyong/whole-flower-activity-particle.git
git@gitee.com:cyyforchenyiyong/whole-flower-activity-particle.git
cyyforchenyiyong
whole-flower-activity-particle
整花活_粒子
master

搜索帮助