OpenXRCompositionLayer¶
实验性: This class may be changed or removed in future versions.
派生: OpenXRCompositionLayerCylinder, OpenXRCompositionLayerEquirect, OpenXRCompositionLayerQuad
所有 OpenXR 合成层节点的父类。
描述¶
合成层允许XR合成器通过保持其质量的特殊投影在耳机内部显示2D视口。这允许渲染明文,同时保持层的原始分辨率。
注意: 如果OpenXR运行时不支持给定的合成层类型,则可以使用 ViewportTexture 生成后备网格,以模拟合成层。
属性¶
|
||
|
||
|
||
|
||
|
方法¶
intersects_ray(origin: Vector3, direction: Vector3) const |
|
is_natively_supported() const |
属性说明¶
使用层的alpha通道启用层的混合。
可以与 Viewport.transparent_bg 结合使用,为层提供透明背景。
Vector2i android_surface_size = Vector2i(1024, 1024) 🔗
如果启用了 use_android_surface,则为要创建的 Android 表面的大小。
bool enable_hole_punch = false 🔗
启用一种称为“打孔”的技术,该技术允许将合成层放在主投影层后面(即将 sort_order 设置为负值),同时通过i3D渲染的所有内容“打孔”,以便层仍然可见。
这可以用于创建合成层与i3D渲染的所有内容存在于同一3D空间的错觉,允许对象看起来既通过合成层的后面,也通过合成层前面。
SubViewport layer_viewport 🔗
void set_layer_viewport(value: SubViewport)
SubViewport get_layer_viewport()
合成层上渲染的 SubViewport。
此合成层的排序顺序。较高的数字将显示在较低的数字之前。
注意: 如果正在使用回退网格,则这将无效。
bool use_android_surface = false 🔗
如果启用,则将创建Android曲面(尺寸来自 android_surface_size ),该曲面将为合成层提供2D内容,而不是使用 layer_viewport 。
请参见 get_android_surface() ,以获取有关如何获取曲面以便应用程序可以在其上绘制的信息。
注意: 这仅在Android版本中有效。
方法说明¶
JavaObject get_android_surface() 🔗
如果启用了 use_android_surface 且 OpenXR 已创建该表面,则返回表示 android.view.Surface 的 JavaObject 。否则将返回 null 。
注意: 该表面仅在 OpenXR 会话活动期间才能创建。因此,如果在 OpenXR 会话之外启用了 use_android_surface ,则需等待新会话完全启动后才会创建该表面。
Vector2 intersects_ray(origin: Vector3, direction: Vector3) const 🔗
返回给定射线与合成层相交处的 UV 坐标。 origin (原点)和 direction (方向)必须处于全局空间坐标系中。
若射线未与合成层相交,则返回 Vector2(-1.0, -1.0) 。
bool is_natively_supported() const 🔗
如果 OpenXR 运行时原生支持该合成层类型,则返回 true 。
注意:只有在 OpenXR 会话启动后,此方法才会返回准确结果。