буфер, вызывающий предыдущую / чрезмерную ошибку графического процессора при отображении нескольких строк текста в Swift ARKit - PullRequest
0 голосов
/ 06 февраля 2019

Я создаю приложение, в котором я хочу отображать несколько строк текста на целевых увеличенных изображениях.Программа отлично работает менее чем с 7 строками текста, но вылетает, когда она достигает более 7 строк.Я также замечаю, что если строка слишком длинная, появляется также та же ошибка «Выполнение буфера команд было прервано из-за ошибки во время выполнения. Игнорируется (из-за предыдущих или чрезмерных ошибок графического процессора)».

    let text = SCNText(string: "this is the first line  \n hello this is the second line \n hello this is the third line \n hello this is the fourth line \n hello this is the fifth line \n hello this is the sixth line \n hello this is the seventh line \n hello this is the eigth lines\n " , extrusionDepth: 0.1)

    //setting the basic properties of text

    text.font = UIFont.systemFont(ofSize: 1)
    text.flatness = 0.005
    text.isWrapped = true
    let textNode = SCNNode(geometry: text)
    let fontScale: Float = 0.01
    textNode.scale = SCNVector3(fontScale, fontScale, fontScale)

// установка текста по центру над изображением и лицом к камере

    textNode.eulerAngles.x = -.pi/2
    centerNode(node: textNode)

    //self.sceneView.scene.rootNode.addChildNode(planeNode)
    // the text will be centered right above the image
    node.addChildNode(textNode)
    // create a plane node as the background of the text
    let textWidth = text.boundingBox.max.x - text.boundingBox.min.x
    let textHeight = text.boundingBox.max.y - text.boundingBox.min.y
    let plane = SCNPlane(width: CGFloat(textWidth), height: CGFloat(textHeight))
    plane.firstMaterial?.transparency = 0.5
    plane.firstMaterial?.diffuse.contents = UIColor.black
    let planeNode = SCNNode(geometry: plane)

    planeNode.position = SCNVector3(textWidth/2,1.5*textHeight,-0.0001)
    textNode.addChildNode(planeNode)

"Выполнение буфера команд было прервано из-за ошибки во время выполнения. Игнорируется (за возникновение предыдущих / чрезмерных ошибок графического процессора) "

1 Ответ

0 голосов
/ 10 июня 2019

Я столкнулся с этой проблемой, когда мой текст создавал слишком много сложности.Я уменьшил общее количество полигонов, увеличив flatness моего SCNText и смог отобразить больше текста.

text.flatness = 0.6    // default value
text.flatness = 0.0005 // more polygons, higher complexity
text.flatness = 1.0   // lower polyon, lower complexity (uglier text)

Попробуйте уменьшить сложность.Освещение, общее количество полигонов, сложность материала и т. Д.

...