Aura3D.Angle.iOS
0.1.0
dotnet add package Aura3D.Angle.iOS --version 0.1.0
NuGet\Install-Package Aura3D.Angle.iOS -Version 0.1.0
<PackageReference Include="Aura3D.Angle.iOS" Version="0.1.0" />
<PackageVersion Include="Aura3D.Angle.iOS" Version="0.1.0" />
<PackageReference Include="Aura3D.Angle.iOS" />
paket add Aura3D.Angle.iOS --version 0.1.0
#r "nuget: Aura3D.Angle.iOS, 0.1.0"
#:package Aura3D.Angle.iOS@0.1.0
#addin nuget:?package=Aura3D.Angle.iOS&version=0.1.0
#tool nuget:?package=Aura3D.Angle.iOS&version=0.1.0
Aura3D.Angle.iOS
Aura3D 的 iOS 渲染路径自带 ANGLE(Metal 后端)上下文,
但 ANGLE 的原生库必须由应用链接进主可执行文件:Aura3D.Avalonia 里的桥接代码用
DllImport("__Internal") 解析符号(为了避开 Apple 自带的 OpenGLES 符号混用),
所以库不能只放在类包里。这个包就是替应用做这件事:装上之后 targets 自动注入
NativeReference,不需要写任何配置。
用法
不需要单独装。Aura3D.Avalonia 的 iOS 目标以精确区间依赖本包,包里的 buildTransitive targets
会穿透到应用工程生效,所以应用侧一行 ANGLE 配置都不用写:
dotnet add package Aura3D.Avalonia
想显式控制切片版本时再直接引用本包也可以:
dotnet add package Aura3D.Angle.iOS
只作用于 iOS 目标框架($(TargetFramework) 含 -ios),桌面/Android 工程装了也不会有副作用。
装完之后 iOS 上仍要确认宿主是默认的 Metal 合成器(不要强制 iOSRenderingMode.OpenGl),
细节见仓库文档《平台与渲染后端》。
包里有什么
native/iossimulator-arm64/libEGL.framework 模拟器切片
native/iossimulator-arm64/libGLESv2.framework
native/ios-arm64/libEGL.framework 真机切片
native/ios-arm64/libGLESv2.framework
build/Aura3D.Angle.iOS.targets 按 $(RuntimeIdentifier) 选切片并注入 NativeReference
buildTransitive/Aura3D.Angle.iOS.targets 同上(传递消费时命中)
LICENSE.angle.txt ANGLE 的 BSD-3-Clause 原文
两份切片都随包入库(约 24 MB),所以发布不需要 depot_tools 也不需要 Xcode。 切片缺失时构建会直接报错,不会静默出一个"能编译、运行时不出图"的包。
发布
本包没有独立的发布通道,跟 pack.yml 的发版列车一起发:同一次运行里先 pack 到 local-feed/
(供仓库自身的 restore 使用,NuGet.config 把这个目录声明成了包源),再 pack 进 packages/
与其他库一起推到 nuget.org(secret NUGET_API_KEY)。因为一切出自同一个 commit,
Aura3D.Avalonia 的 nuspec 里钉的那个版本必定是本次刚发布的那一个。
切片热修 = 改本目录 Aura3D.Angle.iOS.csproj 的 <Version> + 同一次提交里改
Directory.Packages.props 的区间 + 跑一次 pack.yml。之所以要成对改:Aura3D.Avalonia
钉的是精确区间 [<版本>],切片与 Aura3D.Avalonia 里的 DllImport 签名是 ABI 配对,
不能让消费方被动升到一个没配套测过的切片上。也就是说换切片就意味着重发 Aura3D.Avalonia。
native/ 下没有任何切片时 dotnet pack 会直接失败(AngleNativeCheck),不会发出空壳包。
重新构建切片
./build-angle-ios.sh # 模拟器切片
./build-angle-ios.sh --device # 追加真机切片
dotnet pack -c Release -o local-feed
脚本会把 framework 放进 native/。当前版本对应 ANGLE
58f8882372e8a4e83da821ac5d16f0323c3fa1af,gn 参数
angle_enable_metal=true、is_debug=false、enable_rust=false(standalone checkout 即可,
不需要 Chromium 全量 checkout),真机切片额外需要 ios_enable_code_signing=false。
切片按 ANGLE 默认的 ios_deployment_target 构建,minos 为 18.0。
验证状态
- 模拟器 arm64:已验证。
Example.iOS去掉本地路径引用、只靠这个包出包,otool -L可见@rpath/libEGL.framework/libEGL,Base Geometries 与 PBR RenderPipeline 两页正常出图。 - 真机 arm64:未验证运行时。没有可用设备;切片构建通过、按
ios-arm64RID 注入正确, 但真机上的实际渲染没有跑过。
许可
包内二进制来自 ANGLE,按 ANGLE 自己的 BSD-3-Clause 分发(原文见 LICENSE.angle.txt)。
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Aura3D.Angle.iOS:
| Package | Downloads |
|---|---|
|
Aura3D.Avalonia
Three Dimensional Control for Avalonia |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 37 | 9/24/2026 |
ANGLE 58f8882372e8a4e83da821ac5d16f0323c3fa1af, gn: angle_enable_metal=true, is_debug=false, enable_rust=false。
模拟器切片已验证出图;真机切片由 scripts/build-angle-ios.sh 产出,未在设备上验证。