metal

    9热度

    1回答

    我正在通过Metal iOS Swift示例尝试理解他们所建议的三重缓冲实践。这显示在统一动画的演示中。 据我所知,它对齐的内存只是从一个特定的增量开始,这个增量是设备真正喜欢的字节数量的倍数。我的困惑是这行代码 // The 256 byte aligned size of our uniform structure let alignedUniformsSize = (MemoryLayou

    1热度

    1回答

    我一直在学习了一些基本金属呈现和我坚持一些基本概念: 我知道我们可以使用顶点数据发送到着色器: renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0) 然后我们可以找回与着色器: vertex float4 basic_vertex(const device VertexIn* vertexIn [[ buffer(0)

    1热度

    1回答

    在Objective-C 我尝试使用此方法在原地对命令缓冲区进行编码。 -(BOOL) encodeToCommandBuffer: (nonnull id <MTLCommandBuffer>)commandBuffer inPlaceTexture: (__nonnull id <MTLTexture> __strong * __nonnull) texture

    4热度

    1回答

    我想创建一个适用于METAL Api(iOS)的框架。我对这个平台很新,我想知道如何构建框架来处理.metal文件(我正在构建一个静态库,而不是动态的)。它们应该是.a文件的一部分,还是作为框架捆绑中的资源文件?或者还有其他方法可以做到这一点吗?谢谢。 更新: 对于那些谁解决这个 - 我结束了以下warrenm的1所建议的选项 - 转换的。金属文件转换成一个字符串,并调用newLibraryWit

    1热度

    1回答

    我的问题特别是关于金属,因为我不知道如果答案会改变为另一个API。 我相信我至今不解的是这样的: 一个mipmapped质感已预先计算“细节层次”,其中详细的较低水平以某种有意义的方式下采样原始纹理创建。 Mipmap级别是指以细节级别递减的级别,其中0级别是原始纹理,而较高级别是它的两次幂减少。 大多数GPU实现三线性滤波,它为每个采样选取两个相邻的mipmap级别,使用双线性滤波从每个级别采样

    2热度

    1回答

    在Metal Best Practices Guide,它指出,为了获得最佳性能应该“实现三重缓冲模型更新动态缓冲区的数据,”和“动态缓冲区中的数据是指经常更新存储在缓冲区中的数据。” 是否一个MTLTexture符合“存储在缓冲区频繁更新的数据”,如果它需要每一帧进行更新?以上指南中的所有示例都集中在MTLBuffer s。 我注意到苹果在MetalKit实现有一个nextDrawable的概念

    2热度

    1回答

    如果你使用的是iOS金属,并有自定义编程的对象模型,并(像我)你的模型MDLMesh对象停止与金属2和iOS 11的问世工作,那么你可能已经开始研究如何以编程方式生成MDLMesh。 Apple文档说:“通常情况下,您通过遍历MDLAsset对象的对象层次结构来获取网格,但您也可以从您自己的顶点数据创建网格或创建参数化网格。”不幸的是,它没有提供说明或示例代码。 你快速找到双MDLMesh初始化调

    0热度

    1回答

    我对面部署金属呈现循环的链条多的 KCS(核心/计算)着色器和VFS(顶点/片段)着色器来: texture -> [KCS -> VFS -> KCS -> VFS] --\ --->[KCS -> KCS] --> presentable texture -> [KCS -> VFS -> KCS -> VFS] --/ 一个着色器的输出是下一个着色器的输入。

    0热度

    1回答

    详细说明,我可以在下面有什么东西吗? let encoder: MTLRenderCommandEncoder encoder.setCullMode(.front) encoder.drawPrimitives(*) encoder.setCullMode(.back) encoder.drawPrimtives(*)

    0热度

    1回答

    在GLSL中,我简单地使用out vec3 array[10];将数组从顶点着色器传递到片段着色器。在金属,但是,我认为做这种方式: struct FragmentIn { float4 position [[position]]; float3 array[10]; }; 这将产生以下错误: Type 'FragmentIn' is not valid for attr