草庐IT

metallic

全部标签

ios - CoreGraphics 是否支持 Apple 设备上的 Metal?

我读过CoreGraphicsisbasedonOpenGLES并使用QuartzDrawingEngine在Apple设备上(iOS、OSX)但是随着即将到来的deprecationofOpenGLESforMetal,CoreGraphics是否会更新以支持即将推出的iOS/OSX设备的Metal和/或软件渲染? 最佳答案 首先,CoreGraphics不“使用”Quartz。“CoreGraphics”和“Quartz”只是同一事物的两个名称。它们是等价的。其次,Apple不promiseCoreGraphics在幕后使用的是

ios - SceneKit 中用于勾勒对象轮廓的 Metal 着色器

我正在玩弄并尝试在SceneKit中实现Metal着色器,该着色器将勾勒出一个对象。这个想法是画一个类似于thisblogpost中的这张图片的轮廓(或剪影)(博文不包含任何代码):我是SceneKit和Metal着色器的新手,所以我只能绘制一些几何图形并编写简单的顶点或片段着色器。我很好奇我怎样才能达到这种效果?是否分多次完成?干杯! 最佳答案 这里的基本思想是克隆“选定”节点及其几何体,然后使用自定义顶点和片段着色器沿着顶点法线“推出”几何体,只绘制克隆几何体的背面纯色。我写了一个小示例项目来演示这一点并发布了它here.核心S

ios - Metal Compute 管道不适用于 MacOS,但适用于 iOS

我正在尝试使用Metal进行一些GPGPU计算。我有一个基本的Metal管道:创建所需的MTLComputePipelineState管道和所有关联对象(MTLComputeCommandEncoder、命令队列等);创建用于写入的目标纹理(使用desc.usage=MTLTextureUsageShaderWrite;);启动一个基本的着色器来用一些值填充这个纹理(在我的实验中,要么将其中一个颜色分量设置为1,要么根据线程坐标创建一个灰度值渐变);从GPU读回此纹理的内容。我在2个设置中测试此代码:2013年初在OSX10.11上使用MacBookPro;在iOS9和iPhone6上

ios - 使用 Metal/OpenGL ES 在 iOS 中渲染视频

如何使用Metal或OpenGLES渲染视频?我说的是我自己解码和显示帧。我是Metal和OpenGLES的新手,我不知道从哪里开始。 最佳答案 对于刚开始接触此问题的人来说,您的问题并非微不足道,因此您可能希望将其分解为更小的部分。也就是说,我已经这样做了,并且可以描述一般过程。首先,您将从一个AVAssetReader开始,并为音频和视频轨道设置AVAssetReaderOutputs。从中,您可以循环访问CMSampleBufferRefs。对于每个视频帧,您将提取一个CVImageBufferRef。将视频帧上传到OpenG

ios - 是否可以将 Metal API 与 OpenGL ES 3.0 同时用于图形计算?

我想移植一些使用Metal作为计算API(因为iOS仍然不支持ES3.1计算着色器)和OpenGLES作为图形API的OpenCL示例,因为示例使用OCL/OGL互操作似乎是最简单的移植方式。问题是应用程序可以同时使用Metal和OpenGLESAPI,以及是否以及如何实现互操作,即OpenGL映射由Metal计算的数据缓冲对象。谢谢.. 最佳答案 是的,您可以同时使用openGL和MetalAPI,但请记住,两层之间的任何相互通信都会导致主机/GPU内存流量的开销:您必须在Metal/OpenGL表示之间复制纹理和缓冲区。我认为利

ios - 在 Metal 内核中循环展开

我需要强制Metal编译器在我的内核计算函数中展开一个循环。到目前为止,我已经尝试将#pragmaunroll(num_times)放在for循环之前,但编译器会忽略该语句。编译器似乎不会自动展开循环—我比较了1)带有for循环的代码2)相同代码但带有手动展开循环的执行时间。手动展开的版本快3倍。例如:我想从这个开始:for(inti=0;i为此:do_stuff();do_stuff();do_stuff();在MetalC++语言中甚至有类似循环展开的东西吗?如果是,我怎样才能让编译器知道我想展开一个循环? 最佳答案 Metal

iOS Metal 无法执行 'metal'(没有这样的文件或目录)

如何在目标设置为iOS模拟器的情况下在Xcode6中编译iOS«Metal»游戏?error:can'texec'metal'(Nosuchfileordirectory)Commandmetalfailedwithexitcode71 最佳答案 当目标设置为iOS模拟器时,无法编译«Metal»项目。编译项目时,您必须连接物理设备并将其用作目标。如本问题的答案所述:iOS8Metaltemplatesarebroken.更新:自Xcode11起,«Metal»项目可以在iOS模拟器上编译和运行。

ios - 针对 iOS 8 SDK 构建的静态库与 Metal 框架链接

在构建我使用iOS8SDK编写的静态库时,生成的库链接到金属框架:$otool-archall-fl...Loadcommand12519cmdLC_LINKER_OPTION520cmdsize32521count2522string#1-framework523string#2Metal...我认为这是通过UIKit实现的;我不直接链接它,“与标准库链接”是NO。这会导致带有iOS7的Xcode5.1.1出现问题,因为此框架不存在。使用Xcode5构建静态库不与金属链接,但我宁愿使用最新的Xcode生产版本构建,在某些时候我将不得不解决这个问题。我如何使用Xcode6构建并为Xco

ios - 更新 Metal 中 MTLBuffer 的内容

我需要帮助来替换MTLBuffer的内容而不创建新内容。两种情况下的内容都是float组。letvector:[Float]=[0,1,2,3,4,5,6,7,8,9]letbyteLength=arr1.count*MemoryLayout.sizeletbuffer=metalDevice.makeBuffer(bytes:&vector,length:byteLength,options:MTLResourceOptions())letvector2:[Float]=[10,20,30,40,50,60,70,80,90]我知道buffer.contents()给了我们一个Uns

ios - Metal 着色器纹理读取与样本

在Metal着色语言中,访问纹理像素的read和sample函数之间的确切区别是什么,什么时候应该使用哪一个? 最佳答案 一些区别:您可以在纹理边界之外进行采样。但是你不应该阅读纹理之外的内容。采样可以使用归一化坐标(介于0和1之间)。阅读始终使用像素坐标。采样器可以在像素值之间进行插值(例如,如果您在两个像素之间采样)。阅读总能为您提供准确的像素值。 关于ios-Metal着色器纹理读取与样本,我们在StackOverflow上找到一个类似的问题: http