У разных типов устройств разные характеристики дисплея. Приложение может проверять характеристики экрана устройства, на котором оно запущено, и адаптировать контент так, чтобы он отображался наилучшим образом.
Типы режимов смешивания
Значение DisplayBlendMode описывает, как изображения накладываются на реальный мир. Технология дисплея в корне меняет то,
как цифровой контент смешивается с физическим миром.
Аддитивное смешивание
Если в качестве режима смешивания выбран вариант ADDITIVE, черные пиксели будут прозрачными. Часто используется в устройствах с прозрачными линзами, которые позволяют пользователю видеть окружающую среду. Устройство может только добавлять свет на поверхность.
Это означает, что виртуальный контент добавляется в реальный мир путем добавления значений пикселей для каждого из красного, зеленого и синего компонентов. Альфа-канал игнорируется, а черные пиксели становятся прозрачными.
Альфа-смешивание
Если текущий режим смешивания дисплея – ALPHA_BLEND, виртуальный контент добавляется в реальный мир путем альфа-смешивания значений пикселей на основе альфа-компонента. Это относится к XR-шлемам, которые используют непрозрачный дисплей для отображения контента. Яркость каждого пикселя можно регулировать, а также можно настроить пиксели так, чтобы они выглядели черными. В зависимости от активной пространственной среды эти пиксели могут представлять реальный мир через трансляцию с камеры или цифровую среду.
Нет дисплея
Если текущий режим смешивания – NO_DISPLAY, устройство не может отображать пиксели.
Получите текущий DisplayBlendMode.
Чтобы проверить активный DisplayBlendMode, используйте XrDevice.getPreferredDisplayBlendMode:
val preferredDisplayBlendMode = XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() when (preferredDisplayBlendMode) { ADDITIVE -> { // Virtual content is added to the real world by adding the pixel values for each of // Red, Green, and Blue components. Alpha is ignored. Black pixels will appear transparent. } ALPHA_BLEND -> { // Virtual content is added to the real world by alpha blending the pixel values based // on the Alpha component. } NO_DISPLAY -> { // Device doesn't have a display. } }