画一个绕Y轴旋转的球

画一个绕Y轴旋转的球

最近在做一个绕Y轴旋转的球,把之前mac端运行的opengl的相关库,让其支持手机,记录一下

  • 读取模型文件的库 assimp,制作的时候,只选了支持arm64与x86_64,光支持这2个架构,都有1G大小了
  • stb_image读取图片
  • Shader读取角色器文件
  • Camera生成视图矩阵
  • glm库,矩阵变化处理

屏幕监控

TextureRender


使用opengl ,获取SceneDelegateUIWindow,将其展示在另外一个UIWindow

渲染步骤

  • 新建UIView子类,重写layerClass方法

    1
    2
    3
    +(Class)layerClass{
    return [CAEAGLLayer class];
    }

iOS传参分析

iOS传参分析

通过此篇文章,您可以了解x86_64,arm32,arm64下各种函数调用的参数传递的方式;可以了解为什么arm64位下通过可变形参函数hookoc方法取值会crash以及怎么解决的思考;基于参数传递原理,此demo对应的BNRHookAction类,可实现无侵入式埋点。

无侵入式埋点

无侵入式埋点

后续改为从寄存器读取参数值,本文内容未更新

需求:

  • 项目中要做无侵入式埋点
  • 项目中要拦截某些函数,而让其执行特定代码后,不再执行原函数(如在做项目页面路由时,所有由其他app(或网页)唤起本app的页面,都用window.rootViewController present一个navigationController来呈现,nav的rootVC就是要呈现的这个界面,所以需要hook这个VC的返回按钮函数,当次VC不是nav的rootVC时,用pop返回,当是rootVC时用dismiss返回)
  • 让所有被hook的函数都指向同一个函数

源码和使用说明地址

iOS音频编程之混音

iOS音频编程之混音

需求:多个音频源混合后输出,

项目说明:项目中采样4路音频源混合,音频源包含44100hz采样率,3000hz采样率,单声道和立体声;使用MixerVoiceHandle封装混音处理,用户只需要初始化音频文件路径数组,调用启动混音接口,就可实现多路音频混合输出

AirPlay

AirPlay

需求:绕过系统限制,自动选择支持AirPlay的设备

Airplay基础知识

要调用出AirPlay列表需要使用到MPVolumeView控件,当系统检测到网络环境中有支持AirPlay的设备时才会出现AirPlay图标,用户点击这个图标,呼出支持AirPlay的设备列表。