Using Metal to Draw a View‘s Contents用Metal绘制视图内容

本文档介绍了如何使用MetalKit框架在iOS和macOS上创建一个视图,并利用Metal来绘制视图的内容。主要涉及MetalKit视图的配置、代理绘制职责、渲染通道描述符的创建以及命令缓冲的提交等步骤。

Using Metal to Draw a View’s Contents

时间:2021-9-25
分类:Xcode,Metal开发,
针对人群:初学者,具备初级英语能力
来源:XCode帮助文件
Create a MetalKit view and a render pass to draw the view’s contents.
创建一个MetalKit视图和一个渲染通道来绘制视图内容。

Overview

In this sample, you’ll learn the basics of rendering graphics content with Metal.
You’ll use the MetalKit framework框架 to create a view that uses Metal to draw the contents of the view. Then, you’ll encode commands for a render pass that erases the view to a background color.
在这个例子中,你将学习用Metal渲染图形内容的基本操作。你会用MetalKit框架来创建一个视图,用Metal来绘制视图的内容。然后,你编码命令给一个渲染通道来“擦除”掉视图的背景颜色。

  • Note: MetalKit automates windowing system tasks, loads textures, and handles 3D model data. See [MetalKit][MetalKit] for more information.

Prepare a MetalKit View to Draw

MetalKit provides a class called [MTKView][MTKView], which is a subclass of [NSView][NSView] (in macOS) or [UIView][UIView] (in iOS and tvOS).
MTKView handles many of the details related相关联的细节 to getting the content you draw with Metal onto the screen.

An MTKView needs a reference引用(就是 C++中的指针) to a Metal device object in order to create resources internally, so your first step is to set the view’s device property to an existing [MTLDevice][MTLDevice].

_view.device = MTLCreateSystemDefaultDevice();

Other properties属性 on MTKView allow you to control its behavior行为. To erase the contents of the view to a solid background color, you set its clearColor

<think>我收到了用户的问题,是关于Allegro PCB设计软件中的“select elements to place using tree view”的含义和解决办法。用户提到了引用内容,其中引用[1]描述了在放置元件U1时遇到的问题,最后发现是因为在Placement对话框中选中元件后直接点击了OK而没有放置。用户的要求是理解这个操作的含义并找到解决办法。 首先,我需要理解“select elements to place using tree view”这个短语的上下文。它出现在描述中,当用户尝试放置元件U1时,系统提示“Scaled value has been rounded off”,用户怀疑封装问题,但最终发现问题在于手动放置操作流程错误。 从引用[1]的关键部分:“最后发现问题在于place->Manually 调出PLacement选中元件后点击了OK”,这表示用户错误地在选中元件后立即点击了OK按钮,而没有实际在PCB布局区域放置元件。正确流程应该是:通过Place > Manually打开Placement对话框,在Tree View中选择元件,然后在PCB设计窗口中点击以放置元件,放置完成后才能点击OK关闭对话框。 所以,“select elements to place using tree view”的含义是:在Allegro的Placement对话框中,使用树状视图(Tree View)来选择需要放置的元件。树状视图允许用户按类别浏览和选择元件库中的符号,便于查找和放置。 关于解决办法,用户的经验教训是:选中元件后,必须先在PCB上放置它,然后再点击OK。如果直接点击OK而不放置,会导致错误或警告。因此,正确的操作步骤是: 1. 打开Place > Manually菜单项。 2. 在Placement对话框中,使用Advanced Settings切换到Library视图或Tree View。 3. 展开元件库,找到并选中目标元件。 4. 在PCB设计窗口中点击放置元件。 5. 放置后,点击Placement对话框的OK按钮结束操作。 为了避免类似问题,用户应确保在放置元件前不点击OK。引用[2]和[3]提供了其他PCB绘制步骤,如检查未放置元件和DRC检查,但与此问题无直接关系,所以我可以专注于核心问题。 现在,我需要生成相关问题。基于Allegro PCB设计中的元件放置操作,我可以联想出几个问题,比如如何正确使用Tree View、常见错误的解决方法、相关设置等。 确认回答结构:先用中文解释含义和正确步骤,然后列出相关问题。引用标识只在引用内容末尾添加,如“[^1]”。 </think>在Allegro PCB设计中,"select elements to place using tree view" 指通过**分级目录树结构**选择需要放置的元件符号。该操作出现在手动放置元件流程中(`Place > Manually`),Tree View允许用户按库/类别展开浏览器件,选中后需在PCB区域点击完成放置。若操作不当会触发`W- (SPMHUT-48): Scaled value has been rounded off`警告[^1]。 ### 正确操作步骤及解决方法: 1. **调出放置对话框** Execute `Place → Manually`,打开元件放置界面。 2. **切换至Tree View模式** In `Advanced Settings`标签: - 选择`Library`视图模式(默认可能为`Components by refdes`) - 展开库目录树,定位目标元件(如示例中的`RS0102YH8_SOT23_8_WYC`) 3. **关键放置操作** ```markdown [正确流程] 1. 在Tree View选中元件 → PCB工作区出现元件虚影 2. 在PCB设计区域 **单击放置元件** 3. 放置完成后点击对话框`OK`按钮 ``` ⚠️ **错误操作**:选中元件后未在PCB区域放置,**直接点击OK**将触发警告[^1]。 4. **封装原点问题修正** 若警告持续出现,需检查封装设计: - 在封装编辑器(Package Designer)中确认原点位于器件中心 - 执行`Tools → Padstack → Modify Design Padstack`,检查焊盘坐标是否异常 ### 关联检查建议 完成元件放置后,建议通过以下方式验证: 1. 执行`Display → Status`,确认`Unplaced symbols`数量为0[^2] 2. 在`Quick Reports`中生成`Unplaced Components Report`二次核查[^2] ### 相关问题 1. Allegro Tree View中无法显示某些元件库的可能原因是什么? 2. 如何解决元件放置时出现的"Symbol has missing pads"错误? 3. PCB布局完成后,DRC检查的关键步骤有哪些?[^2] 4. 元件放置后飞线(ratsnest)不自动生成应如何排查? > 附图说明:Tree View操作界面示意 > ```mermaid > graph LR > A[Place→Manually] --> B(Advanced Settings) > B --> C[Library View] > C --> D{展开库目录树} > D --> E[定位目标元件] > E --> F[PCB区域单击放置] > F --> G[点击OK完成] > ``` [^1]: 直接点击OK而未放置元件会导致警告 [^2]: 布局完整性验证方法参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值