This commit is contained in:
smix8 2021-11-10 22:03:11 +01:00 committed by GitHub
commit 0f491f9b2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View file

@ -2836,6 +2836,26 @@
If [code]true[/code], sets internal processes to shrink all image data to half the size.
</description>
</method>
<method name="texture_set_proxy">
<return type="void" />
<argument index="0" name="proxy" type="RID" />
<argument index="1" name="base" type="RID" />
<description>
Creates an update link between two textures similar to how [ViewportTexture]'s operate. When the base texture is the textue of a [Viewport] everytime the viewport renders a new frame the proxy texture automatically receives an update.
For example, this code links a generic [ImageTexture] to the texture output of the [Viewport] using the VisualServer API:
[codeblock]
func _ready():
var viewport_rid = get_viewport().get_viewport_rid()
var viewport_texture_rid = VisualServer.viewport_get_texture(viewport_rid)
var proxy_texture = ImageTexture.new()
var viewport_texture_image_data = VisualServer.texture_get_data(viewport_texture_rid)
proxy_texture.create_from_image(viewport_texture_image_data)
var proxy_texture_rid = proxy_texture.get_rid()
VisualServer.texture_set_proxy(proxy_texture_rid, viewport_texture_rid)
$TextureRect.texture = proxy_texture
[/codeblock]
</description>
</method>
<method name="texture_set_size_override">
<return type="void" />
<argument index="0" name="texture" type="RID" />

View file

@ -1859,6 +1859,7 @@ void VisualServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("texture_set_path", "texture", "path"), &VisualServer::texture_set_path);
ClassDB::bind_method(D_METHOD("texture_get_path", "texture"), &VisualServer::texture_get_path);
ClassDB::bind_method(D_METHOD("texture_set_shrink_all_x2_on_set_data", "shrink"), &VisualServer::texture_set_shrink_all_x2_on_set_data);
ClassDB::bind_method(D_METHOD("texture_set_proxy", "proxy", "base"), &VisualServer::texture_set_proxy);
ClassDB::bind_method(D_METHOD("texture_bind", "texture", "number"), &VisualServer::texture_bind);
ClassDB::bind_method(D_METHOD("texture_debug_usage"), &VisualServer::_texture_debug_usage_bind);