makeRenderPipelineState не удалось [вывод типа ushort не совместим с цветным вложением MTLPixelFormatR16Float.] - PullRequest
2 голосов
/ 02 октября 2019

Я пытаюсь представить некоторый текст с помощью realitykit, код компилируется, сцена начинается, но текст в сцене не отображается.

Я использую iPhone 7 под управлением iOS 13.1.2,я попробовал тот же код, но с коробкой Mesh Resource, и он работает просто отлично.

Мой контроллер выглядит следующим образом

    func makeUIView(context: Context) -> ARView {

        let arView = ARView(frame: .zero)

        let anchor = AnchorEntity(plane: .horizontal)

        let mesh = MeshResource.generateText("text")
        let color = UIColor.systemBlue
        let material = UnlitMaterial(color: color)
        let entity = ModelEntity(mesh: mesh, materials: [material])

        anchor.addChild(entity)

        // Add the box anchor to the scene
        arView.scene.anchors.append(anchor)

        return arView

    }

Как я уже говорил, когда я получаю во время выполнения, консоль показывает эти ошибки:

2019-10-02 09:07:33.707275+0200 tesss[646:78901] Compiler failed to build request
2019-10-02 09:07:33.707476+0200 tesss[646:78901] [Graphics] makeRenderPipelineState failed [output of type ushort is not compatible with a MTLPixelFormatR16Float color attachement.].
2019-10-02 09:07:33.707507+0200 tesss[646:78901] [Graphics] makeRenderPipelineState failed.

1 Ответ

2 голосов
/ 02 октября 2019

По умолчанию метод MeshResource.generateText использует системный шрифт, который по умолчанию очень большой, поэтому вам нужно изменить его размер. Есть два способа сделать это:

1) Изменить размер объекта:

entity.scale = SIMD3<Float>(0.01, 0.01, 0.1)

2) Изменить размер шрифта:

let mesh = MeshResource.generateText(
            "text", 
            extrusionDepth: 0.1,
            font: .systemFont(ofSize: 0.1),
            containerFrame: CGRect.zero,
            alignment: .left,
            lineBreakMode: .byTruncatingTail)
...