projection的作用是设置一个投影大小,坐标的传输可以按照这个大小来设置,比较好理解,比如设置宽高 100 * 100的投影矩阵,100扔进去,会缩小到1,50扔进去缩小到0.5,顶点着色器最后输出的坐标就是[-1.0, 1.0, 1.0]
背景和ball精灵的矩阵计算还没彻底弄明白:opengl::math::glm的矩阵运算是左乘还是右乘?
learnopengl最后一章游戏实践完成了,终于持续两个月左右的opengl学习之旅结束了,也是一个新的开始。没有涉及新的知识,简单总结
一、项目架构梳理
虽然是个demo,但是有很好的代码结构,体现了良好的面向对象设计,功能的封装,既是一个opengl的练习demo,也是一个非常不错的c 练习项目
二、收获
2.1 粒子特效,这个项目中涉及到很多游戏里很巧妙的算法,很有趣
1)粒子速度衰减算法
- mac屏幕需要适配
GLboolean ShouldSpawn(GLuint chance)
{
GLuint random = rand() % chance;
return random == 0;
}
...
// 随机数 取模,生成一个概率1/75的算法
ShouldSpawn(75)