跳到主要内容

Viewport

继承

Node

简要描述

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

描述

视口会在屏幕中创建一个不同的视图,或在另一个视口中创建一个子视图。 子级2D节点将显示在其上,子级Camera 3D节点也将在其上进行渲染。

(可选)视口可以具有自己的2D或3D世界,因此它们不与其他视口共享绘制的内容。

如果视口是ViewportContainer的子级,它将自动占用其大小,否则必须手动设置。

视口还可以选择作为音频侦听器,因此视口将根据其2D或3D摄像机子代生成位置音频。

此外,如果设备具有多个屏幕,则可以将视口分配给不同的屏幕。

最后,视口还可以充当渲染目标,在这种情况下,除非使用关联的纹理进行绘制,否则它们将不可见。

成员

类型属性名默认值
boolarvrfalse
boolaudio_listener_enable_2dfalse
boolaudio_listener_enable_3dfalse
Transform2Dcanvas_transform
intdebug_draw0
booldisable_3dfalse
Transform2Dglobal_canvas_transform
boolgui_disable_inputfalse
boolgui_snap_controls_to_pixelstrue
boolhandle_input_locallytrue
boolhdrtrue
boolkeep_3d_linearfalse
intmsaa0
boolown_worldfalse
boolphysics_object_pickingfalse
boolrender_direct_to_screenfalse
intrender_target_clear_mode0
intrender_target_update_mode2
boolrender_target_v_flipfalse
intshadow_atlas_quad_02
intshadow_atlas_quad_12
intshadow_atlas_quad_23
intshadow_atlas_quad_34
intshadow_atlas_size0
Vector2sizeVector2( 0, 0 )
boolsize_override_stretchfalse
booltransparent_bgfalse
intusage2
Worldworld
World2Dworld_2d

方法

返回值类型方法名称
Worldfind_world() const
World2Dfind_world_2d() const
Cameraget_camera() const
Transform2Dget_final_transform() const
Controlget_modal_stack_top() const
Vector2get_mouse_position() const
intget_render_info(info: int)
intget_shadow_atlas_quadrant_subdiv(quadrant: int) const
Vector2get_size_override() const
ViewportTextureget_texture() const
RIDget_viewport_rid() const
Rect2get_visible_rect() const
Variantgui_get_drag_data() const
boolgui_has_modal_stack() const
boolgui_is_dragging() const
voidinput(local_event: InputEvent)
boolis_input_handled() const
boolis_size_override_enabled() const
voidset_attach_to_screen_rect(rect: Rect2)
voidset_input_as_handled()
voidset_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: int)
voidset_size_override(enable: bool, size: Vector2 = Vector2( -1, -1 ), margin: Vector2 = Vector2( 0, 0 ))
voidunhandled_input(local_event: InputEvent)
voidupdate_worlds()
voidwarp_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
Defaultfalse
setterset_use_arvr(value)
getteruse_arvr
  • bool audio_listener_enable_2d
Defaultfalse
setterset_as_audio_listener_2d(value)
getteris_audio_listener_2d
  • bool audio_listener_enable_3d
Defaultfalse
setterset_as_audio_listener(value)
getteris_audio_listener
  • Transform2D canvas_transform
setterset_canvas_transform(value)
getterget_canvas_transform
  • int debug_draw
Default0
setterset_debug_draw(value)
getterget_debug_draw
  • bool disable_3d
Defaultfalse
setterset_disable_3d(value)
getteris_3d_disabled
  • Transform2D global_canvas_transform
setterset_global_canvas_transform(value)
getterget_global_canvas_transform
  • bool gui_disable_input
Defaultfalse
setterset_disable_input(value)
getteris_input_disabled
  • bool gui_snap_controls_to_pixels
Defaulttrue
setterset_snap_controls_to_pixels(value)
getteris_snap_controls_to_pixels_enabled
  • bool handle_input_locally
Defaulttrue
setterset_handle_input_locally(value)
getteris_handling_input_locally
  • bool hdr
Defaulttrue
setterset_hdr(value)
getterget_hdr
  • bool keep_3d_linear
Defaultfalse
setterset_keep_3d_linear(value)
getterget_keep_3d_linear
  • int msaa
Default0
setterset_msaa(value)
getterget_msaa
  • bool own_world
Defaultfalse
setterset_use_own_world(value)
getteris_using_own_world
  • bool physics_object_picking
Defaultfalse
setterset_physics_object_picking(value)
getterget_physics_object_picking
  • bool render_direct_to_screen
Defaultfalse
setterset_use_render_direct_to_screen(value)
getteris_using_render_direct_to_screen
  • int render_target_clear_mode
Default0
setterset_clear_mode(value)
getterget_clear_mode
  • int render_target_update_mode
Default2
setterset_update_mode(value)
getterget_update_mode
  • bool render_target_v_flip
Defaultfalse
setterset_vflip(value)
getterget_vflip
  • int shadow_atlas_quad_0
Default2
setterset_shadow_atlas_quadrant_subdiv(value)
getterget_shadow_atlas_quadrant_subdiv
  • int shadow_atlas_quad_1
Default2
setterset_shadow_atlas_quadrant_subdiv(value)
getterget_shadow_atlas_quadrant_subdiv
  • int shadow_atlas_quad_2
Default3
setterset_shadow_atlas_quadrant_subdiv(value)
getterget_shadow_atlas_quadrant_subdiv
  • int shadow_atlas_quad_3
Default4
setterset_shadow_atlas_quadrant_subdiv(value)
getterget_shadow_atlas_quadrant_subdiv
  • int shadow_atlas_size
Default0
setterset_shadow_atlas_size(value)
getterget_shadow_atlas_size
  • Vector2 size
DefaultVector2( 0, 0 )
setterset_size(value)
getterget_size
  • bool size_override_stretch
Defaultfalse
setterset_size_override_stretch(value)
getteris_size_override_stretch_enabled
  • bool transparent_bg
Defaultfalse
setterset_transparent_background(value)
getterhas_transparent_background
  • int usage
Default2
setterset_usage(value)
getterget_usage
  • World world
setterset_world(value)
getterget_world
  • World2D world_2d
setterset_world_2d(value)
getterget_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)

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