WWDC2023 Metal swift 头显ARKit支持c c++ 开发

news/2024/11/30 9:35:09/

1 今年WWDC,我们看见了苹果的空间计算设备,visionOS也支持了c c++ API.

这有什么好处呢,不是说能够吸引更多c c++开发者加入苹果开发者阵营,而是我们过去的很多软件,可以轻松对接到苹果的头显设备,让我们的软件支持苹果头显全新的交互。

例如我们过去的游戏引擎,用c#开发,或者别的语言开发的,那我们就可以很轻松写一个c c++版本的插件,让游戏引擎支持ARKit空间计算,以及交互逻辑。

过去开发的3D建模设计软件的,数字绘画软件的,大概率这种软件用的是c++开发,我也很容易将我的软件适配新的苹果头显设备。过去一些著名的U框架啊,也很容易轻松适配苹果头显的交互逻辑。如今我们看见了一个更加开放的苹果,对于开发者这在过去是不可想象的。

2 苹果iOS开发左手swift右手 c c++

苹果公司从08年开始,主推自己的object-c,oc其实类似c++,在c语言基础上实现了一套面相对象的框架。后来呀,oc慢慢发展自动内存回收,也是逐渐想降低iOS开发者的门槛。经过不断发展,oc其实后来已经非常简单易用了,但是苹果还是觉得oc这门语言啊,过于复杂,于是开始搞swift这种类似python的脚本语言。

苹果公司很多新的框架,主推的开发语言都是swift。 比如苹果从2014年开始推的自家取代OpenGL下一大图形API Metal, 首选的开发语言都是swift。 但是swift这种全新的开发语言有个什么问题呢,每年都在变。一直到去年的swift5.0才慢慢稳定。一门开发语言一直变,意味着你去年写的代码,升级到几年的版本可能就用不了了。这是让开发者很头疼的。

同时整个行业,在图形学领域,基本上都是c++的天下,过去二三十年,3D图形学领域,大量的第三方库,框架,工业级软件,都是c++。 于是你就会发现,苹果推自家的Metal,从2014年开始,快10年了,很难推动。 很多行业级别的软件比如Blender,之前都想用Vulkan的跨平台解决方案。苹果最后自己着急了,开始自己出钱,出程序员,出设备,给Blender写基于Metal的渲染器。

同时在2022年,正式开放了c++版本的Metal,一向高高在上的苹果,也发现自己推一个东西,很难跟整个行业开发者对抗。当应用开发很难有什么创新,进入深水区的时候,苹果也没办法。

今年的swift新版本,直接就可以在swift中使用c++。为啥很多程序员都喜欢用c++,因为c++代码天然跨平台,十年前的代码,拿到今天依然可以跑。不会像一些新的语言不断变。所以大量行业级别的基础库,首选c++。

3 做iOS Android开发会点c c++ 

 做iOS开发,安卓开发,大部分时候你写界面,做上层应用基本用的是oc swift java,  做应用开发啊,工资天花板本身比较低啊,极少有互联网公司有30多k的,行业天花板平均在25k上下。

但是做iOS Android开发程序员你熟练使用c c++,你的天花板,上可以到七八十k。 为什么要学c c++呢,因为学了c c++,我们就有能力去写TCP/UDP这些网络通讯底层应用,同时大量的第三方库,历史上都是c c++写的。

比如OpenGL,FFmepg,OpenCV等.做移动手机开发,我们需要学习的绝大多数时候其实是c语言,c语言相对于c++稍微简单一些。对c++的要求并没有那么高,因为你并不是专业做c++开发的,大多数时候都是做c++应用开发,并不是让你去写什么中间件级别的软件。

比如安卓上,你熟练使用c c++, 就能够利用NDK开发对接使用大量的第三方库。甚至自己写一些库,sdk交给别的上层应用开发者去调用。

我们这里说的要求低,其实就是需要你会一些基础c++,比如类,对象,继承,多态,重载,STL标准库,模版等等,掌握这些然后去做c++应用软件开发,就简单很多。c++语言本身比较复杂,但我们可以只使用其中一个子集。比如对于c++标准,大多数时候,使用到c++03 c++11即可,别的东西,基本上就不需要去研究那么深入了,这样就相对简单多了。

VR AR MR开发时代,音视频,图像处理开发技术,尤其是OpenGL ES是最基础的技术。

这里给大家推荐我个人的音视频,图像处理开发系列课程。


http://www.ppmy.cn/news/420735.html

相关文章

大模型 Transformer介绍-Part1

众所周知,transformer 架构是自然语言处理 (NLP) 领域的一项突破。它克服了 seq-to-seq 模型(如 RNN 等)无法捕获文本中的长期依赖性的局限性。事实证明,transformer 架构是 BERT、GPT 和 T5 及其变体等革命性架构的基石。正如许多…

手机客户端添加设备时需要扫描二维码,如何查找二维码

扫描设备机身上的二维码。如果设备机身上没有二维码,可登录设备扫描: 摄像机网页界面: 配置>网络配置>宇视云 网络视频录像机显示器/网页界面: 网络配置>宇视云 一体机:系统配置>网络配置>宇视云

深入理解Java虚拟机jvm-运行时数据区域(基于OpenJDK12)

运行时数据区域 运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的…

Python二维码扫描

模块准备 1.pyzbar pip install pyzbar 2.PIL 注意:PIL只支持Python2,所以我们需要安装Pillow pip install Pillow 代码示例 from PIL import Image import pyzbar.pyzbar as pyzbardef QRcode_message(image):img Image.open(image) # 读取图片…

【01Studio MaixPy AI K210】14.二维码识别

目录 导包: image库 例程: 导包: import sensor,lcd,time image库 #查找 roi 区域内的所有二维码并返回一个 image.qrcode 的对象列表。 image.find_qrcodes([roi])#返回一个矩形元组(x,y,w,h) qrcode.rect()#返…

js打开手机摄像头实现扫描二维码功能

js打开手机摄像头 在js中使用navigator.getUserMedia这个api 可以点击查看api的使用navigator.getUserMedia 这个api是结合https协议使用的,在http协议中摄像头是无法打开的 var video document.querySelector(video); navigator.getUserMedia({audio: false,vid…

Android使用ZXing实现二维码的扫描和创建

一、引用依赖 1、zxing 生成二维码的依赖 implementation com.google.zxing:core:3.3.3 implementation com.journeyapps:zxing-android-embedded:3.6.0 2、zxing 扫码二维码依赖 implementation pub.devrel:easypermissions:1.0.1 implementation cn.bingoogolapple:bga-p…

Android Studio 扫描识别二维码(包含闪光灯和本地二维码)、生成二维码、生成带logo的二维码

一、测试如下: 1.扫描识别二维码,扫描结果多少 2.生成二维码、生成带logo的二维码 二、添加依赖: 1.在Project的build.gradle中添加maven { url ‘https://jitpack.io’ } allprojects {repositories {google