草庐IT

MTLTexture

全部标签

ios - 将 MTLTexture 转换为 CVPixelBuffer

我目前正在使用Metal开发实时过滤器。在定义我的CIImage之后,我将图像渲染到MTLTexture。下面是我的渲染代码。context是由Metal支持的CIContext;targetTexture是附加到我的MTKView实例的currentDrawable属性的纹理的别名:context?.render(drawImage,to:targetTexture,commandBuffer:commandBuffer,bounds:targetRect,colorSpace:colorSpace)它呈现正确,因为我可以看到图像显示在MetalView上。问题是在渲染图像(并显示它

ios - 将非常大的图像缩小到 MTLTexture

我关注了thisexample从Apple缩小非常大的图像我是downloadingfromaremotelocation.我已经用Swift重写了代码。它显然有效,但是当我调用MTKTextureLoader.newTexture时,应用程序崩溃并在_loadCGImage中出现EXC_BAD_ACCESS。没有其他提示,但我怀疑图像数据已经发布或其他...任何提示为什么它会在没有任何正确错误消息的情况下崩溃?这是顶层代码,//thisisanextensionofMTKTextureLoader//[...]ifletuiImage=UIImage(contentsOfFile:c

ios - 当我将 MTLTexture 保存到 CGImage 时,像素颜色会发生变化吗?

我需要将Metal纹理保存并加载到文件中。下面的示例代码如下。我注意到RGB值在保存和重新加载时发生了变化。metaltexturepixel:RGBA:42,79,12,95aftersaveandreload:66,88,37,95那变得更亮也更灰暗。接下来保存它开始变暗。我使用的是iPadPro,所以想知道这是否是色彩空间问题。关于为什么会发生这种情况以及如何解决它的任何指示?在下面保存cgImage的行中,我可以检查原始像素数据并看到RGBA为66、88、37。//saving...letciCtx=CIContext()letciImage=CIImage(mtlTextur

swift - 使用 MTLTexture 作为 SCNScene 的环境贴图

我想设置一个MTLTexture对象作为场景的环境贴图,因为根据documentation这似乎是可行的.我可以使用以下代码将环境贴图设置为UIImage:letroomImage=UIImage(named:"room")scene.lightingEnvironment.contents=roomImage这有效,我在Metal物体上看到了图像的反射。我尝试将图像转换为MTLTexture并使用以下代码将其设置为环境贴图:letroomImage=UIImage(named:"room")letloader=MTKTextureLoader(device:MTLCreateSyst

swift - 使用 MTLTexture 作为 SCNScene 的环境贴图

我想设置一个MTLTexture对象作为场景的环境贴图,因为根据documentation这似乎是可行的.我可以使用以下代码将环境贴图设置为UIImage:letroomImage=UIImage(named:"room")scene.lightingEnvironment.contents=roomImage这有效,我在Metal物体上看到了图像的反射。我尝试将图像转换为MTLTexture并使用以下代码将其设置为环境贴图:letroomImage=UIImage(named:"room")letloader=MTKTextureLoader(device:MTLCreateSyst

ios - 从 CVImageBuffer 持有 MTLTexture 会导致卡顿

我正在使用CVMetalTextureCacheCreateTextureFromImage从CVImageBuffer(来自相机和播放器)创建一个MTLTexture以获得CVMetalTexture然后CVMetalTextureGetTexture获取MTLTexture。我看到的问题是,当我稍后使用Metal渲染纹理时,我偶尔会看到渲染乱序的视频帧(视觉上它及时来回断断续续),大概是因为CoreVideo正在修改底层CVImageBuffer存储和MTLTexture只是指向那里。有什么方法可以让CoreVideo在释放MTLTexture对象之前不接触那个缓冲区并使用它的池中

ios - 从 CVImageBuffer 持有 MTLTexture 会导致卡顿

我正在使用CVMetalTextureCacheCreateTextureFromImage从CVImageBuffer(来自相机和播放器)创建一个MTLTexture以获得CVMetalTexture然后CVMetalTextureGetTexture获取MTLTexture。我看到的问题是,当我稍后使用Metal渲染纹理时,我偶尔会看到渲染乱序的视频帧(视觉上它及时来回断断续续),大概是因为CoreVideo正在修改底层CVImageBuffer存储和MTLTexture只是指向那里。有什么方法可以让CoreVideo在释放MTLTexture对象之前不接触那个缓冲区并使用它的池中

c# - 将 uintptr_t 转换为 id<MTLTexture>

我想创建一个简单的iOS插件,它可以将纹理绘制为统一的Texture2D。我已经通过CreateExternalTexture()和UpdateExternalTexture()完成了它,它工作正常,但我很好奇我是否真的可以直接从iOS端填充Unity纹理。这是我的iOS插件代码:////testTexturePlugin.m//Unity-iPhone////Createdbyuseron18/01/16.////#import#import#import#include"UnityMetalSupport.h"#include#includestaticUIImage*LoadIm

ios - 裁剪和缩放 MTLTexture

我可以创建一个新的MTLTexture尺寸w2/h2现有MTLTexture区域x1/y1/w1/h1?PS:我考虑过使用MTLTexture.buffer?.makeTexture但偏移量需要为64字节。为什么? 最佳答案 这是一个示例,说明如何使用MPSImageLanczosScale执行此操作。请注意,sourceRegion是在源纹理的像素坐标系中表示的,destRegion应该等于目标纹理的整个区域(请注意,它具体不说明目的地区域的起源):letscaleX=Double(destRegion.size.width)/D

ios - SceneKit - 在不使用单独的 SCNRenderer 的情况下从 SCNView 获取渲染场景作为 MTLTexture

我的SCNView使用Metal作为渲染API,我想知道是否有一种方法可以将渲染场景抓取为MTLTexture而无需使用单独的SCN渲染器?当我尝试通过SCNView显示场景并通过SCNRenderer将屏幕外的场景重新渲染到MTLTexture时,性能下降(我试图抓取每一帧的输出)。SCNView让我可以访问它使用的MTLDevice、MTLRenderCommandEncoder和MTLCommandQueue,但不能为了获得MTLTexture(通过renderPassDescriptor.colorAttachments[0].texture)我需要底层的MTLRenderPa
12