39.opengl-游戏实战

时间:2022-07-28
本文章向大家介绍39.opengl-游戏实战,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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)粒子速度衰减算法

  1. mac屏幕需要适配
GLboolean ShouldSpawn(GLuint chance)
{
    GLuint random = rand() % chance;
    return random == 0;
}
...
// 随机数 + 取模,生成一个概率1/75的算法
ShouldSpawn(75)
2.2 碰撞的检测和计算

很遗憾的一点是,irrklang在mac上不兼容,游戏的声音不能成功加载