SceneKit: SCNRenderingAPI

String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true

Убедитесь, что вы понимаете, почему. Это потому, что сравнение == сравнивает только ссылки; equals() метод сопоставляет содержимое по символу.

Когда вы вызываете new для a и b, каждый получает новую ссылку, указывающую на "foo" в таблице строк. Ссылки разные, но контент один и тот же.

0
задан Geovanni Escobar 9 March 2019 в 23:47
поделиться

1 ответ

SceneKit - это абстракция, построенная на OpenGL / Metal. Он объединяет часто используемые операции, модели затенения и т. Д. В приятную среду, поэтому программистам не нужно реализовывать весь конвейер рендеринга. Вам не нужно переходить в Metal для выполнения часто поддерживаемых операций, таких как физический рендеринг.

Чтобы реализовать PBR, вам нужно указать, что ваш объект использует PBR, и установить различные входные данные, необходимые для визуализации эффекта:

let material = firstNode.geometry?.firstMaterial
material?.lightingModelName = SCNLightingModelPhysicallyBased
material?.diffuse.contents = UIImage(named: "albedo.png")
material?.roughness.contents = UIImage(named: "roughness.png")
material?.metalness.contents = UIImage(named: "metalness.png")
material?.normal.contents = UIImage(named: "normal.png")

Вам нужно только перейти в Metal, если вы пытаетесь реализовать эффект, который не поддерживается SceneKit. Надеюсь, это поможет!

0
ответ дан Janie Larson 9 March 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: