swift - 无法在 Apple Silicon (M1) 上的 SceneKit 中将 AVCaptureVideoPreviewLayer 设置为漫反射内容
问题描述
我正在尝试AVCaptureVideoPreviewLayer
在 SceneKit 材质上显示一个。
编辑:预览层的内容来自我的 USB 连接的 iOS 设备。
- 下面链接的代码在我使用
NSView
' 层时有效,因此该部分应该没问题 - 整个事情似乎适用于英特尔,但不适用于 Apple Silicon
- 整个项目都在这里——所有代码都在
ViewController
怎么了?
我尝试了什么?
- 使用
NSView
' 层 - 有效 - 未在图层上设置大小 - 金属崩溃(高度为 0,宽度为 0 - 这在 Big Sur 中是预期的)
- 将图层的大小设置为与输入端口尺寸完全相同的大小 - 相同的崩溃
- 确保图层未显示在其他位置(如您将在代码中看到的那样)
更新:这是detach
在 lldb 中运行的崩溃日志:
https ://gist.github.com/mortenjust/4470c8e9e8ca1dc3043388b8b2886703
解决方案
从崩溃日志中得知
- 崩溃是由 ASan 触发的(参见AddressSanitizer)
- 哪个
libMTLCapture.dylib
是Xcode中用来调试Metal的库
我会禁用 Xcode 中的 GPU 帧捕获调试选项,看看崩溃是否消失。如果是这样,我会向 Apple 提交反馈。
Thread 2 Crashed:: Dispatch queue: com.apple.root.default-qos
0 libsystem_kernel.dylib 0x00000001826c0cec __pthread_kill + 8
1 libsystem_pthread.dylib 0x0000000103beb384 pthread_kill + 292
2 libsystem_c.dylib 0x0000000182639864 abort + 104
3 libclang_rt.asan_osx_dynamic.dylib 0x0000000102be5e4c __sanitizer::Abort() + 64
4 libclang_rt.asan_osx_dynamic.dylib 0x0000000102be5788 __sanitizer::Die() + 208
5 libclang_rt.asan_osx_dynamic.dylib 0x0000000102bcf238 __asan::ScopedInErrorReport::~ScopedInErrorReport() + 420
6 libclang_rt.asan_osx_dynamic.dylib 0x0000000102bcd06c __asan::ReportDeadlySignal(__sanitizer::SignalContext const&) + 148
7 libclang_rt.asan_osx_dynamic.dylib 0x0000000102bcc950 __asan::AsanOnDeadlySignal(int, void*, void*) + 96
8 libsystem_platform.dylib 0x0000000182739c44 _sigtramp + 56
9 libMTLCapture.dylib 0x0000000103a96eb0 0x1039e0000 + 749232
10 com.apple.SceneKit 0x00000001a0ac1d50 __92-[SCNTextureCoreAnimationSource _resizeLayer:toSize:updateLayer:updateTransform:caRenderer:]_block_invoke + 824
11 libclang_rt.asan_osx_dynamic.dylib 0x0000000102bc7e28 __wrap_dispatch_group_async_block_invoke + 188
12 libdispatch.dylib 0x0000000103b401d8 _dispatch_call_block_and_release + 32
13 libdispatch.dylib 0x0000000103b41d20 _dispatch_client_callout + 20
14 libdispatch.dylib 0x0000000103b58d04 _dispatch_root_queue_drain + 1664
15 libdispatch.dylib 0x0000000103b5939c _dispatch_worker_thread2 + 140
16 libsystem_pthread.dylib 0x0000000103be74b8 _pthread_wqthread + 216
17 libsystem_pthread.dylib 0x0000000103be6228 start_wqthread + 8
推荐阅读
- infinispan - 错误/Infinispan 9.4.20.Final 到 10.1.8.Final 之间事务行为的变化
- c - 搜索不存在的项目时,链表出现分段错误
- javascript - Unicode编码问题
- c - 我在 C 编程中遇到错误。([Error] 预期标识符或 '(' 在 '{' 标记之前) 。有人可以帮我解决一下,让我知道为什么吗?
- python - 在 MacOS 10.15.6 上的 LLDB 中调试 python 3.7
- python - 在PostgreSQL13函数中使用plpython连接pymssql报错
- c++ - 在 vs 代码中链接到 .dylib
- powerbi - Dax Measure 计算每周系列
- c++ - 使用不同类型提升 program_options 值
- java - 1L和(长)1的区别