跳转至

Viewport

继承

Node

简要描述

在屏幕中创建一个子视图。

描述

视口会在屏幕中创建一个不同的视图,或在另一个视口中创建一个子视图。 子级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)

将鼠标扭曲到相对于视口的位置。