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

2023-11-23 10:50

本文主要是介绍WWDC2023 Metal swift 头显ARKit支持c c++ 开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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是最基础的技术。

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

这篇关于WWDC2023 Metal swift 头显ARKit支持c c++ 开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417414

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版