草庐IT

bare-metal

全部标签

ios - 如何在iphone或mac中识别可用的 Metal 计算设备

谁能举个例子来说明如何用metal识别可用的计算设备,比如cpu和gpu?非常感谢 最佳答案 Metal仅适用于GPU。也就是说,有一个名为MTLCopyAllDevices()的函数返回您的系统拥有的所有GPU。这是一个简单示例,说明我如何在OSXPlayground上运行它以查看我的系统有哪些兼容设备。编辑:在Objective-C这看起来很相似。只需导入第一:@implementationAppDelegate-(void)applicationDidFinishLaunching:(NSNotification*)aNoti

ios - Metal 有后备缓冲吗?

我目前正在追踪我的Metal应用程序中的一些视觉弹出,我相信这是因为我直接绘制到帧缓冲区,而不是后台缓冲区//thisiswhenI'vefinishedpassingcommandstotherenderbufferandissuethedrawcommand.Ibelievethissendsalltheimagesdirectlytotheframebufferinsteadofusingabackbuffer[renderEncoderendEncoding];[mtlCommandBufferpresentDrawable:frameDrawable];[mtlCommand

ios - Metal View (MTKView) 绘图尺寸问题

这里我有一个MTKView并在摄像头源上实时运行一个简单的CIFilter。这很好用。问题在旧设备的自拍相机上,例如iPhone5、iPadAir,提要绘制在较小的区域。更新:发现发生这种情况时,馈送到MTKView的CMSampleBuffer尺寸较小。我想每次更新中的纹理都需要按比例放大?importUIKitimportMetalPerformanceShadersimportMetalKitimportAVFoundationfinalclassMetalObject:NSObject,MTKViewDelegate{privatevarmetalBufferView:MTKV

ios - Metal 着色器文件中除顶点|片段|内核之外的函数的 Synax

我正在将一些基本的OpenCL代码移植到Metal计算着色器。尝试转换其他辅助函数时很早就陷入困境。例如,在.metal文件中包含类似以下函数的内容Xcode(7.1)会给我一个“Nopreviousprototypeforfunction”警告floatmaxComponent(float4a){returnfmax(a.x,fmax(a.y,fmax(a.z,a.w)));}执行此操作的“Metal”方法是什么? 最佳答案 我知道的三种方式:(我将函数重写为重载,并且对我来说更具可读性。)实际声明原型(prototype):fl

ios - 用 Metal 调用顶点着色器多少次?

我一直在学习一些基本的Metal渲染,但我被一些基本概念所困:我知道我们可以使用以下方式将顶点数据发送到着色器:renderEncoder.setVertexBuffer(vertexBuffer,offset:0,index:0)然后我们可以在着色器中检索它:vertexfloat4basic_vertex(constdeviceVertexIn*vertexIn[[buffer(0)]],unsignedintvid[[vertex_id]])据我所知,每个顶点都会调用一次顶点函数,vertex_id会在每次调用时更新以包含顶点索引。问题是,vertex_id从何而来?我可以向着色

iOS - 结合 SpriteKit 和 Metal

是否可以将SpriteKit与Metal结合使用?如果是,如何在物理世界中实现Metal粒子和SKNode的结合,使其相互碰撞,这种需求的通常方法是什么。谢谢 最佳答案 它们是两种完全不同的技术。SpriteKit是一个为您抽象所有渲染工作并为您提供内置物理引擎的框架。而Metal纯粹是一种低级GPU加速图形API,可让您完全控制渲染过程。它类似于OpenGLES,但开销要少得多。SpriteKit将使用Metal(在符合条件的设备上)来渲染您的场景。您不需要做任何事情,因为SpriteKit会在幕后处理所有渲染。你不能把它们结合起

ios - SceneKit 统计显示中的 "Metal Flush"是什么?

我正在尝试解决FPS下降问题。我看到MetalFlushes占用了大部分渲染时间。这是好事吗? 最佳答案 对此我不确定,因为Apple似乎没有记录任何地方的“MetalFlush”到底是什么,但我会根据以前使用OpenGL的经验来回答:在GPU驱动的应用程序的执行周期中,CPU会将数据推送到GPU,等待GPU完成对这些数据的操作(可能同时做其他工作),一旦GPU被完成后,推送更多数据并请求更多操作。通常,“刷新”意味着CPU正在等待GPU完成操作(“刷新旧数据”),以便它可以将更多数据推送到GPU。因此,如果我的解释是正确的,那将意

iOS Metal 线宽

我想设置我在Metal中绘制的线条的宽度。我可以使用point_size设置点的大小,如下所述:https://developer.apple.com/library/prerelease/ios/documentation/Metal/Reference/MTLRenderCommandEncoder_Ref/index.html但是,我不确定它如何处理线条。 最佳答案 简短的回答是没有办法像Metal中的点大小一样控制线宽。即使在OpenGL图形API中,执行此操作的函数(以前作为gllinewidth函数存在)现在也已弃用。一

ios - Metal - `include` 或 `import` 函数

是否可以将metal文件导入或包含到另一个metal文件中?假设我有一个包含所有数学函数的Metal文件,我只会在我的Metal项目中需要时包含或导入它。可能吗?我试过:#include"sdf.metal"我得到了错误:metallib:Multiplydefinedsymbols_Z4vmaxDv2_fCommand/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin/metallibfailedwithexitcode1更新:这是我的两个着色器文件:SDF.metal:#ifnde

ios - Metal 着色语言 - (控制台)输出?

我可以使用控制台输出(如Swift中的print)调试我的Metal着色语言代码吗?如果是,怎么办?如果没有,是否还有其他方法可以从我的.metal文件中输出变量?(也许通过使用commandEncoder-buffer将数据从.metal文件传递​​到我的.swift文件?)我试图通过commandEncoder将对Int变量(在我的.swift文件中)的引用传递到我的.metal文件,但没有成功。在.metal文件中,我为int变量赋值,但如果我在我的swift文件中打印Int,则赋值不存在。.swift文件:...varmyMetalOutput:Int=0...letprint