Viewport
继承
简要描述
在屏幕中创建一个子视图。
描述
视口会在屏幕中创建一个不同的视图,或在另一个视口中创建一个子视图。 子级2D节点将显示在其上,子级Camera 3D节点也将在其上进行渲染。
(可选)视口可以具有自己的2D或3D世界,因此它们不与其他视口共享绘制的内容。
如果视口是ViewportContainer的子级,它将自动占用其大小,否则必须手动设置。
视口还可以选择作为音频侦听器,因此视口将根据其2D或3D摄像机子代生成位置音频。
此外,如果设备具有多个屏幕,则可以将视口分配给不同的屏幕。
最后,视口还可以充当渲染目标,在这种情况下,除非使用关联的纹理进行绘制,否则它们将不可见。
成员
类型 | 属性名 | 默认值 |
---|---|---|
bool | arvr | false |
bool | audio_listener_enable_2d | false |
bool | audio_listener_enable_3d | false |
Transform2D | canvas_transform | |
int | debug_draw | 0 |
bool | disable_3d | false |
Transform2D | global_canvas_transform | |
bool | gui_disable_input | false |
bool | gui_snap_controls_to_pixels | true |
bool | handle_input_locally | true |
bool | hdr | true |
bool | keep_3d_linear | false |
int | msaa | 0 |
bool | own_world | false |
bool | physics_object_picking | false |
bool | render_direct_to_screen | false |
int | render_target_clear_mode | 0 |
int | render_target_update_mode | 2 |
bool | render_target_v_flip | false |
int | shadow_atlas_quad_0 | 2 |
int | shadow_atlas_quad_1 | 2 |
int | shadow_atlas_quad_2 | 3 |
int | shadow_atlas_quad_3 | 4 |
int | shadow_atlas_size | 0 |
Vector2 | size | Vector2( 0, 0 ) |
bool | size_override_stretch | false |
bool | transparent_bg | false |
int | usage | 2 |
World | world | |
World2D | world_2d |
方法
返回值类型 | 方法名称 |
---|---|
World | find_world() const |
World2D | find_world_2d() const |
Camera | get_camera() const |
Transform2D | get_final_transform() const |
Control | get_modal_stack_top() const |
Vector2 | get_mouse_position() const |
int | get_render_info(info: int) |
int | get_shadow_atlas_quadrant_subdiv(quadrant: int) const |
Vector2 | get_size_override() const |
ViewportTexture | get_texture() const |
RID | get_viewport_rid() const |
Rect2 | get_visible_rect() const |
Variant | gui_get_drag_data() const |
bool | gui_has_modal_stack() const |
bool | gui_is_dragging() const |
void | input(local_event: InputEvent) |
bool | is_input_handled() const |
bool | is_size_override_enabled() const |
void | set_attach_to_screen_rect(rect: Rect2) |
void | set_input_as_handled() |
void | set_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: int) |
void | set_size_override(enable: bool, size: Vector2 = Vector2( -1, -1 ), margin: Vector2 = Vector2( 0, 0 )) |
void | unhandled_input(local_event: InputEvent) |
void | update_worlds() |
void | warp_mouse(to_position: Vector2) |
信号
- **gui_focus_changed**
当Control节点获取键盘焦点时发出。
- **size_changed**
更改视口大小时发出的信号,无论是通过set_size_override,调整窗口大小还是通过其他方式更改。
枚举
enum UpdateMode:
- **UPDATE_DISABLED = 0**
不要更新渲染目标。
- **UPDATE_ONCE = 1**
更新渲染目标一次,然后切换到UPDATE_DISABLED。
- **UPDATE_WHEN_VISIBLE = 2**
仅在可见时更新渲染目标。
- **UPDATE_ALWAYS = 3**
始终更新渲染目标。
enum ShadowAtlasQuadrantSubdiv:
- **SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED = 0**
该象限将不被使用。
- **SHADOW_ATLAS_QUADRANT_SUBDIV_1 = 1**
该象限将仅由一个阴影贴图使用。
- **SHADOW_ATLAS_QUADRANT_SUBDIV_4 = 2**
该象限将一分为四,最多可用于4个阴影贴图。
- **SHADOW_ATLAS_QUADRANT_SUBDIV_16 = 3**
该象限将被拆分16种方式,最多可被16个阴影贴图使用。
- **SHADOW_ATLAS_QUADRANT_SUBDIV_64 = 4**
该象限将以64种方式拆分,最多可用于64个阴影贴图。
- **SHADOW_ATLAS_QUADRANT_SUBDIV_256 = 5**
该象限将被分割256种方式,最多可被256个阴影贴图使用。 除非shadow_atlas_size很高,否则该象限中的阴影将具有非常低的分辨率。
- **SHADOW_ATLAS_QUADRANT_SUBDIV_1024 = 6**
该象限将被分割1024种方式,最多可被1024个阴影贴图使用。 除非shadow_atlas_size很高,否则该象限中的阴影将具有非常低的分辨率。
- **SHADOW_ATLAS_QUADRANT_SUBDIV_MAX = 7**
表示ShadowAtlasQuadrantSubdiv枚举的大小。
enum RenderInfo:
- **RENDER_INFO_OBJECTS_IN_FRAME = 0**
框架中的对象数量。
- **RENDER_INFO_VERTICES_IN_FRAME = 1**
框架中的顶点数量。
- **RENDER_INFO_MATERIAL_CHANGES_IN_FRAME = 2**
框架中的材料变化量。
- **RENDER_INFO_SHADER_CHANGES_IN_FRAME = 3**
着色器在框架中的变化量。
- **RENDER_INFO_SURFACE_CHANGES_IN_FRAME = 4**
框架中的表面变化量。
- **RENDER_INFO_DRAW_CALLS_IN_FRAME = 5**
框架中的绘制调用数量。
- **RENDER_INFO_MAX = 6**
表示RenderInfo枚举的大小。
enum DebugDraw:
- **DEBUG_DRAW_DISABLED = 0**
对象正常显示。
- **DEBUG_DRAW_UNSHADED = 1**
显示的对象没有灯光信息。
- **DEBUG_DRAW_OVERDRAW = 2**
对象将显示为半透明并带有附加混合,因此您可以看到它们相交的位置。
- **DEBUG_DRAW_WIREFRAME = 3**
对象以线框样式显示。
enum MSAA:
- **MSAA_DISABLED = 0**
禁用多样本抗锯齿模式。
- **MSAA_2X = 1**
使用2x多重采样抗锯齿。
- **MSAA_4X = 2**
使用4倍多重采样抗锯齿。
- **MSAA_8X = 3**
使用8倍多重采样抗锯齿。 低端和较旧的硬件可能不受支持。
- **MSAA_16X = 4**
使用16x多重采样抗锯齿。 中低端硬件可能不受支持。
enum Usage:
- **USAGE_2D = 0**
分配绘制2D场景所需的所有缓冲区。 与3D使用模式相比,这需要更少的VRAM。
- **USAGE_2D_NO_SAMPLING = 1**
分配2D场景所需的缓冲区,而无需为屏幕复制分配缓冲区。 因此,您无法从屏幕上阅读。 在[枚举用法]类型中,这需要最少的VRAM。
- **USAGE_3D = 2**
分配用于绘制3D场景和所有3D效果的完整缓冲区,包括2D场景和效果所需的缓冲区。
- **USAGE_3D_NO_EFFECTS = 3**
分配绘制3D场景所需的缓冲区。 但不分配从屏幕读取和后期处理效果所需的缓冲区。 保存一些VRAM。
enum ClearMode:
- **CLEAR_MODE_ALWAYS = 0**
始终在绘制之前清除渲染目标。
- **CLEAR_MODE_NEVER = 1**
切勿清除渲染目标。
- **CLEAR_MODE_ONLY_NEXT_FRAME = 2**
清除渲染目标下一帧,然后切换到CLEAR_MODE_NEVER。
常量
成员说明
- bool arvr
Default | false |
---|---|
setter | set_use_arvr(value) |
getter | use_arvr |
- bool audio_listener_enable_2d
Default | false |
---|---|
setter | set_as_audio_listener_2d(value) |
getter | is_audio_listener_2d |
- bool audio_listener_enable_3d
Default | false |
---|---|
setter | set_as_audio_listener(value) |
getter | is_audio_listener |
- Transform2D canvas_transform
setter | set_canvas_transform(value) |
---|---|
getter | get_canvas_transform |
- int debug_draw
Default | 0 |
---|---|
setter | set_debug_draw(value) |
getter | get_debug_draw |
- bool disable_3d
Default | false |
---|---|
setter | set_disable_3d(value) |
getter | is_3d_disabled |
- Transform2D global_canvas_transform
setter | set_global_canvas_transform(value) |
---|---|
getter | get_global_canvas_transform |
- bool gui_disable_input
Default | false |
---|---|
setter | set_disable_input(value) |
getter | is_input_disabled |
- bool gui_snap_controls_to_pixels
Default | true |
---|---|
setter | set_snap_controls_to_pixels(value) |
getter | is_snap_controls_to_pixels_enabled |
- bool handle_input_locally
Default | true |
---|---|
setter | set_handle_input_locally(value) |
getter | is_handling_input_locally |
- bool hdr
Default | true |
---|---|
setter | set_hdr(value) |
getter | get_hdr |
- bool keep_3d_linear
Default | false |
---|---|
setter | set_keep_3d_linear(value) |
getter | get_keep_3d_linear |
- int msaa
Default | 0 |
---|---|
setter | set_msaa(value) |
getter | get_msaa |
- bool own_world
Default | false |
---|---|
setter | set_use_own_world(value) |
getter | is_using_own_world |
- bool physics_object_picking
Default | false |
---|---|
setter | set_physics_object_picking(value) |
getter | get_physics_object_picking |
- bool render_direct_to_screen
Default | false |
---|---|
setter | set_use_render_direct_to_screen(value) |
getter | is_using_render_direct_to_screen |
- int render_target_clear_mode
Default | 0 |
---|---|
setter | set_clear_mode(value) |
getter | get_clear_mode |
- int render_target_update_mode
Default | 2 |
---|---|
setter | set_update_mode(value) |
getter | get_update_mode |
- bool render_target_v_flip
Default | false |
---|---|
setter | set_vflip(value) |
getter | get_vflip |
- int shadow_atlas_quad_0
Default | 2 |
---|---|
setter | set_shadow_atlas_quadrant_subdiv(value) |
getter | get_shadow_atlas_quadrant_subdiv |
- int shadow_atlas_quad_1
Default | 2 |
---|---|
setter | set_shadow_atlas_quadrant_subdiv(value) |
getter | get_shadow_atlas_quadrant_subdiv |
- int shadow_atlas_quad_2
Default | 3 |
---|---|
setter | set_shadow_atlas_quadrant_subdiv(value) |
getter | get_shadow_atlas_quadrant_subdiv |
- int shadow_atlas_quad_3
Default | 4 |
---|---|
setter | set_shadow_atlas_quadrant_subdiv(value) |
getter | get_shadow_atlas_quadrant_subdiv |
- int shadow_atlas_size
Default | 0 |
---|---|
setter | set_shadow_atlas_size(value) |
getter | get_shadow_atlas_size |
- Vector2 size
Default | Vector2( 0, 0 ) |
---|---|
setter | set_size(value) |
getter | get_size |
- bool size_override_stretch
Default | false |
---|---|
setter | set_size_override_stretch(value) |
getter | is_size_override_stretch_enabled |
- bool transparent_bg
Default | false |
---|---|
setter | set_transparent_background(value) |
getter | has_transparent_background |
- int usage
Default | 2 |
---|---|
setter | set_usage(value) |
getter | get_usage |
- World world
setter | set_world(value) |
---|---|
getter | get_world |
- World2D world_2d
setter | set_world_2d(value) |
---|---|
getter | get_world_2d |
方法说明
- find_world find_world() const
返回视口的3D世界,如果没有,则返回父视口的世界。
- find_world_2d find_world_2d() const
返回视口的2D世界。
- get_camera get_camera() const
返回活动的3D相机。
- get_final_transform get_final_transform() const
返回视口的总变换。
- get_modal_stack_top get_modal_stack_top() const
返回堆栈中最顶层的模态。
- get_mouse_position get_mouse_position() const
返回鼠标相对于视口的位置。
- get_render_info get_render_info(info: int)
从渲染管道返回有关视口的信息。
- get_shadow_atlas_quadrant_subdiv get_shadow_atlas_quadrant_subdiv(quadrant: int) const
返回指定象限的ShadowAtlasQuadrantSubdiv。
- get_size_override get_size_override() const
返回使用set_size_override设置的尺寸替代。
- get_texture get_texture() const
返回视口的纹理。
注意:由于OpenGL的工作方式,因此将ViewportTexture垂直翻转。 您可以对Texture.get_data的结果使用Image.flip_y将其向后翻转,例如:
var img = get_viewport().get_texture().get_data()
img.flip_y()
- get_viewport_rid get_viewport_rid() const
从VisualServer返回视口的RID。
- get_visible_rect get_visible_rect() const
返回全局屏幕坐标中的可见矩形。
- gui_get_drag_data gui_get_drag_data() const
从GUI返回拖动数据,该数据先前由Control.get_drag_data返回。
- gui_has_modal_stack gui_has_modal_stack() const
如果屏幕上显示可见的模态,则返回true
。
- gui_is_dragging gui_is_dragging() const
如果视口当前正在执行拖动操作,则返回true
。
- input input(local_event: InputEvent)
- is_input_handled is_input_handled() const
- is_size_override_enabled is_size_override_enabled() const
如果启用了尺寸覆盖,则返回true
。
- set_attach_to_screen_rect set_attach_to_screen_rect(rect: Rect2)
将此[视口]附加到具有指定矩形的根[视口]。 这样就无需另一个节点来显示此[视口],但使您有责任手动更新此[视口]的位置。
- set_input_as_handled set_input_as_handled()
阻止输入在SceneTree中进一步传播。
- set_shadow_atlas_quadrant_subdiv set_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: int)
设置要在指定象限中使用的细分数。 更高数量的细分使您可以一次在场景中创建更多阴影,但会降低阴影的质量。 优良作法是使象限具有不同数量的细分,并尽可能减少细分。
- set_size_override set_size_override(enable: bool, size: Vector2 = Vector2( -1, -1 ), margin: Vector2 = Vector2( 0, 0 ))
设置视口的尺寸替代。 如果enable
参数为true
,则使用替代,否则它将使用默认大小。 如果size参数为(-1,-1)
,则不会更新大小。
- unhandled_input unhandled_input(local_event: InputEvent)
- update_worlds update_worlds()
强制更新2D和3D世界。
- warp_mouse warp_mouse(to_position: Vector2)
将鼠标扭曲到相对于视口的位置。