我有一条金属管道在工作。
我正在渲染活脸几何图形,
是从iPhone X上的TrueDepth相机捕获的。
我每帧都从ARFaceGeometry
抓取ARSessionDelegate
。
我将数据传递到框架中的金属管道中。
渲染速度为2.5fps ...
以下是渲染管道:PixelsRender.swift
数据:xyz的uv和索引数组。
ARFaceGeometry
由2304个三角形组成。
我计时了渲染管道:
[1.086ms] Command Buffer
[0.006ms] Input Texture
[0.054ms] Drawable
[0.110ms] Command Encoder
[0.123ms] Uniforms
[0.006ms] Uniform Arrays
[0.009ms] Fragment Texture
[68.015ms] Vertices
[0.002ms] Vertex Uniforms
[0.000ms] Custom Vertex Texture
[0.027ms] Draw
[0.036ms] Encode
[80.207ms] All CPU
[346.936ms] GPU
[431.035ms] All CPU + GPU
[434.100ms] Total
渲染所有顶点需要很长时间。
有没有办法在GPU或其他东西上缓存内存空间?
我敢肯定,我有很多事情要做,我想念的任何明显的东西吗?
这是我的朋友的脸:
更新(已解决)
我误以为是三角形的实例!
它在主抽奖功能中。 (感谢Ken Thomases抓住了这个机会)
commandEncoder.drawPrimitives(type: vertices.type,
vertexStart: 0,
vertexCount: vertices.vertexCount,
instanceCount: 1 /* previously triangle count of 2304 */)
新GPU时间:
[2.769ms] GPU
答案 0 :(得分:1)
您无意使用实例化工程图,为此参数instanceCount:
传递了一个大于1的值。这基本上使GPU要做的渲染工作量成倍增加。因此,如果您实际上不需要/不需要实例化图纸,请在此处传递1。