首页 文章
  • 2 votes
     answers
     views

    如何有效地复合 Quartz 和 OpenGL/Metal 绘图?

    我有一个游戏需要一些高级绘图结构,比如复杂的贝塞尔曲线和填充(随每一帧变化),我想用 OpenGL 或 Metal 绘制的一些更原始的东西进行复合/叠加。是否有一种有效(高性能)的方法来做到这一点? 我可以在 OpenGL 图层上简单地使用石英绘图层,还是会遭受巨大的性能损失? 我应该将我的 Quartz 绘图捕获到位图并将其作为纹理推入 OpenGL 吗?或者在每一帧上这样做会非常慢? ...
  • 1 votes
     answers
     views

    如何在 SCNScene/SCNView 中连续动画 SCNProgram 着色器?

    在 MacOS 应用程序中,我有一个由 SCNProgram 定义的模式,映射到 SCNPlane。 它看起来像这样: 着色器应该使三角形行移动,就像在这个视频中一样。该视频是在 MTKview 内部运行的同一着色器的屏幕抓取。 动画纹理 在此着色器的 SceneKit 版本中,着色器仅在我单击视图中的平面时动画。 如何让 SceneKit 视图(或 Scene?)一直为着色器设置动画?这个应用...
  • 6 votes
     answers
     views

    如何在 SceneKit 中移动旋转的 SCNNode?

    下图显示了一个旋转的框,应该在 X 和 Z 轴上水平移动。 Y 应该不受影响以简化方案。盒子也可以是相机的 SCNNode,所以我猜这个投影在这一点上没有意义。 所以我们要说我们想要沿着红色箭头的方向移动盒子。如何使用 SceneKit 实现这一目标? 红色箭头表示方框的-Z 方向。它还向我们展示了它与摄像机的投影或与网格显示为深灰色线条的全局轴不平行。 我的最后一种方法是平移矩阵和旋转矩阵的乘积...
  • 0 votes
     answers
     views

    将多个.metal文件编译为一个.metallib

    我目前正在使用Metal编写一些自定义Core Image过滤器 . 为了结构起见,我想将不同的内核放入不同的 .metal 文件中,并使用一些常见的包含,就像使用“普通”源文件一样 . 但是,当 metallib 工具将Metal编译器创建的不同 .air 文件捆绑到一个 .metallib 文件中时,只有在给予 metallib 的第一个输入 .air 文件中定义的内核函数是可见的 . 似乎没...
  • 0 votes
     answers
     views

    从Metal中的IOSurface获取纹理

    我正试图从金属表面获得纹理id . 我有两个问题1.该功能未定义 GLint glTextureID = CGLTexImageIOSurface2D(self.mEAGLContext, GL_TEXTURE_2D, GL_RGBA , textureWidth, textureHeight, GL_RGBA , GL_UNSIGNED_BYTE, ioSurface, 0); 我试图将它包含...
  • 3 votes
     answers
     views

    用金属渲染四边形性能

    我是'm trying to render a large number of very small 2D quads as fast as possible on an Apple A7 GPU using the Metal API. Researching that GPU'的三角形吞吐量数字,例如here,并且在他们的主题演示期间,Apple在屏幕上引用了> 1M三角形,我认为GPU...
  • 9 votes
     answers
     views

    金属中的多个模型 . 怎么样?

    这是一个绝对的初学者问题 . 背景:我不是真正的游戏开发者,但我正在努力学习低级3D编程的基础知识,因为这是一个有趣而有趣的话题 . 我选择Apple的Metal作为图形框架 . 我了解SceneKit和其他更高级别的框架,但我有意尝试学习低级别的部分 . 不幸的是,我已经走出了我的深度,并且网上似乎很少有面向初学者的金属资源 . 通过阅读Apple文档并按照我能找到的教程,我设法实现了一个简单的...
  • 3 votes
     answers
     views

    是否可以在.metal文件中包含标准c库?

    我目前正在研究iOS中的图像处理应用程序的金属内核(在.metal文件中) . 我想要包含一些标准的C库(例如或),但Xcode似乎不允许它(我在编译时遇到“找不到文件”错误 . 以前有人遇到过这类问题吗?在不使用某些基本库的情况下有能力在金属中编写自定义内核似乎很荒谬,这让我觉得必须有答案 .
  • 0 votes
     answers
     views

    金属函数无法使用Xcode 8进行编译

    自从迁移到Xcode 8和iOS10后,我的基于金属的应用程序根本无法运行 . 在启动时,我收到错误:“编译器因XPC_ERROR_CONNECTION_INTERRUPTED而失败” 由于 MTLComputePipelineState 未成功创建并在调用 MTLDevice 函数 makeComputePipelineState(function:) 时抛出错误,因此在崩溃之前在控制台中出现两...
  • 1 votes
     answers
     views

    金属着色器中更宽,更平滑的线条

    我正在为SceneKit应用程序将一些glsl / opengl代码转换为Metal,因此它可以由Metal渲染 . 我有一个用原始类型SCNGeometryPrimitiveTypePolygon创建的SCNNode(solidNode)和一个用原始类型SCNGeometryPrimitiveTypeLine创建的childNode(wireframeNode) . 子节点具有相同的顶点,即 ....
  • 1 votes
     answers
     views

    为什么我启用了Metal API,但我的Coreml自定义层仍在CPU上运行

    我是Coreml和Metal的新手 . 现在我正在研究Core Ml模型的项目测试性能 . 我实现了一个基于张量流的CNN模型,并使用tf-coreml工具将此模型转换为.mlmodel . 但在我的CNN模型中,它有一个名为'equal'的操作,Coreml不支持 . 它转换为.mlmodel的自定义层my .mlmodel file screen shot 然后我跟着Hollemans惊人的博...
  • 3 votes
     answers
     views

    当新节点变得可见时,SceneKit 应用程序会断断续续

    即使应用程序在前后 60 fps 平稳运行,当新节点出现在屏幕上时,我的 SceneKit 应用程序(使用 Metal)也会出现问题。 想象一下,游戏中的东西被破坏,有时出现在被破坏的地方。我很确定口吃与 power-ups 的出现有关,因为当事物被摧毁(因此从场景中移除)时它不会发生。 到目前为止我尝试修复口吃:我通过 SceneKit 视图的预加载方法预加载节点,并仅在其完成处理程序中将它们添...
  • 3 votes
     answers
     views

    使用 SceneKit 在 swift 中进行数学可移动网格

    我是一名想要编写几何游戏的数学家。 我有几个网格的精确坐标和数学公式,我需要显示它们的单位法线。 我每个网格只需要一个纹理(彩色反光金属)。 我需要让用户移动棋子,i.e。再次通过简单的数学公式更改网格的坐标。 所以我不需要导入 3D 文件,而是我可以计算所有内容。 想象一种魔方。计算立方体坐标,并由用户旋转立方体。我的程序在 Mathematica 中运行。 我现在很困难,因为现在不眠不休,试图...
  • 1 votes
     answers
     views

    Scenekit 相机绕物体运行

    大家好, 我回答你关于我当前的问题。我已经问了一个关于这个的问题,但没有人能成功帮助我。然后我将解释我的完整问题以及我是如何尝试解决它的。 (我尝试了几件事) 因此,我需要编写一个 lib,它可以添加许多功能,以便管理 3D 世界中的摄像机和对象。为此,我们选择了 SceneKit Framework 来使用 Metal。 我将发布一个非常简化的代码,但所有必要的东西都在这里。 为了说明我的想法,...
  • 4 votes
     answers
     views

    在 Swift 2(Metal)中加载 STL 对象

    我正在尝试创建 3D 模型查看器,我已经完成了 OpenGL 和 Metal 的一些教程,以创建 3D 模型并使用平移手势进行一些基本旋转等。此示例来自www.raywenderlich.com,示例项目 Git(error 免费), web(original 代码)在 Xcode 7.1.1 上存在一些错误。我想加载 STL 文件以显示在设备而不是多维数据集上。我进行了很多搜索,但是找不到用于加...
  • 1 votes
     answers
     views

    在 ARKit 中将屏幕点取消投影到水平面

    我正在尝试使用 ARKit 将屏幕上的某些点投影到世界空间中 ARPlaneAnchor 上的坐标上。本质上,我想根据相机指向的位置在地平面上绘制标记。 ARKit 提供了一些方法来执行此操作,但是它们是附加到 ARCamera 类的,但是不幸的是,在我的场景中,我只能访问摄像机的投影,视图和变换矩阵,而没有引用 ARFrame 或 ARCamera 对象本身。据我所知,我已经写了与 gluUnp...
  • 0 votes
     answers
     views

    未定义的金属IOSurface参考

    我正在尝试初始化IOSurface并且我得到了对所有属性的未定义引用 . NSDictionary* dict = @{ IOSurfacePropertyKeyWidth: [NSNumber numberWithInt:textureWidth], IOSurfacePropertyKe...
  • 0 votes
     answers
     views

    尝试与Opengl纹理共享金属质感

    我查看了文档,但我不知道如何获取纹理ID . 我实际上是从SDK获得金属质感,我想与Ogre Texture共享它 . 我的问题该代码编译但我不知道如何获取纹理ID,以便我可以使用它来为Ogre渲染它 . 代码崩溃了,根本不起作用 . 我花了很多时间来构建它 . 希望有人节省我的时间 . 例如,它现在在此行崩溃,但ioSurface已初始化 id<MTLTexture> metalTe...
  • -1 votes
     answers
     views

    获取纹理宽度属性和行字节

    我正在尝试通过该行访问MTLTexture属性 void* texPtr = SixDegreesSDK_GetBackgroundTexture(); id<MTLTexture> mtlTexture = (__bridge id<MTLTexture>)texPtr; 我试着做textureWidth = mtlTexture.width,但它说找不到属性 ...
  • 1 votes
     answers
     views

    ASTC在金属中的纹理压缩 - 我应该使用什么作为每行的字节数?

    我'm writing a program that'在Metal中使用压缩纹理 . 我在使用MTLTexture的 replaceRegion() 函数时遇到了一些麻烦 . 参数 bytesPerRow 似乎没有意义 . 它表示对于压缩纹理,“ bytesPerRow 是从一行块的开头到下一行的开头的字节数 . ” 现在我使用ASTC和4x4块,这意味着我有8 bpp . 那么4 * 4是16,...
  • 1 votes
     answers
     views

    未找到金属设备/初始化CoreML模型时声明网络时出错

    当尝试使用任何Apple的CoreML教程(例如,this one)时,代码初始化模型时如下: let model = try VNCoreMLModel(for: MobileNet().model) 我在该段的最后一行的模型(MobileNet.swift)的自动生成代码中收到以下错误: let bundle = Bundle.main let assetPath = bundle.url(...
  • 3 votes
     answers
     views

    如何在SceneKit中每帧绘制动态线条或曲线

    我有一个Metal支持的SceneKit项目,我想在每帧画一条在CPU上修改过的曲线 . 这似乎应该是一项简单的任务;我多次在OpenGL中完成的一个 . 就像是: array_of_points[0].x = 25 array_of_points[0].y = 35 upload_array_to_gpu() render_frame() 似乎无法修改SCNNode的SCNGeometrySo...
  • 1 votes
     answers
     views

    ARKit SceneKit金属集成

    我试图将ARKit中的对象创建与SceneKit和Metal集成 . 有些东西我可以用SeneKit轻松创建,有些用Metal创建,所以我希望能够并排使用 . 例如,使用sceneKit模板创建一个ArKit项目会通过SceneKit节点将太空船作为演示放置 . 另一方面,使用Metal模板在ARKit中创建一个立方体,并使用锚点进行挖掘 . 我怎样才能在同一个项目中使用它们?例如,通过Metal...
  • 1 votes
     answers
     views

    使用自定义Metal着色器在SceneKit中性能下降

    我有4000个对象的场景(1000个对象是可见的),全部使用相同的材料(通过将自定义创建的SCNGeometry的firstMaterial属性分配给相同的SCNMaterial对象)以60FPS运行(1000个绘制调用,150k个三角形,Metal flush~12ms) . 现在我想改变渲染我的素材 . 使用着色器修改器一切正常,性能相同,但我需要完全替换SceneKit的渲染,所以我使用SC...
  • 2 votes
     answers
     views

    在金属着色器中读取帧缓冲

    分两步渲染图像 . 它需要两对顶点和片段着色器 . 在第二步中,第二个片段着色器需要第一对着色器渲染的帧缓冲区 . 如何获取帧缓冲区或特殊坐标中的颜色 . 我已经阅读了以下答案 . iOS Metal Shader - Texture read and write access? How to chain filters in Metal for iOS? fragment float4 seco...
  • 0 votes
     answers
     views

    在OpenGLES或Metal中着色器后绘制线条

    在OpenGLES或Metal中,我使用顶点/片段着色器向屏幕渲染内容 . 但是在片段着色器完成后,我需要传递几个顶点并绘制连接这些顶点的折线 . 我该怎么做呢?换句话说,是否可以链接着色器的输出和绘制多边形的基本OpenGL命令?我原则上可以通过在片段着色器中实现额外的逻辑来绘制线条,它将涉及大量的计算和if-then-else,我认为这不是非常干净的方法 .
  • 1 votes
     answers
     views

    金属顶点着色器绘制纹理点

    我想执行使用混合绘制Points基元的Metal(或OpenGLES 3.0)着色器 . 为此,我需要将纹理的所有像素坐标传递给顶点着色器作为顶点,这些顶点计算要传递给片段着色器的顶点的位置 . 片段着色器只是在启用了混合的情况下输出点的颜色 . 我的问题是,如果将顶点坐标传递给顶点着色器是有效的,因为1920x1080图像的顶点太多,需要在一秒钟内完成30次?就像我们在计算着色器中使用dispa...
  • 0 votes
     answers
     views

    实现具有两个输入的CoreML自定义层

    我有一个张量流图,我想转换为CoreML,但它使用了一些缺少的操作,我将不得不实现为自定义图层 . 我现在关注的两个操作是 Sin 和 FloorDiv . Sin 非常简单,我可以关注this tutorial,我有一个工作的Swift类和 Metal 内核来完成这项工作,我用玩具coreml文件测试过: import Foundation import CoreML import Accel...
  • 0 votes
     answers
     views

    CoreML自定义图层:使用金属着色器进行像素标准化

    我正在将Nvidia的GAN发电机的逐步发展转换为coreML . 我已经设法将所有内容转移到coreML,但Pixelwise规范化(Lambda)层除外,我计划将其作为Swift / Metal中的自定义coreML层实现 . 在TensorFlow.Keras中,我已经将像素规范实现为 def pixelwise_norm(a): return a / tf.sqrt(tf.redu...
  • 1 votes
     answers
     views

    AVPlayerItem.seek(to:cmTime,toleranceBefore:,toleranceAfter :)获取特定的视频帧?

    本周我有一段悲惨的时间试图从Quicktime电影中获取视频帧并将其显示在Metal纹理中 . 它比我预想的要困难得多 . 我只想显示第0帧,然后使用箭头键在视频帧中前后移动 . 在使用AVPlayererItemVideoOutput.hasNewPixelBuffer(forItemTime:time)函数失败后,我现在尝试使用seek()函数 . 这几乎可行 . 视频暂停后,我会在我想要的时...

热门问题