From 0ea06fe44664dcda3b0ade028f78682c32b5ede2 Mon Sep 17 00:00:00 2001 From: Lurker Date: Thu, 14 Aug 2025 18:53:34 -0700 Subject: [PATCH] Added the C# code equivalent to the note in Viewport.GetTexture() Define 'viewport' for parity with GDScript's '$viewport' Co-authored-by: Paul Joannon <437025+paulloz@users.noreply.github.com> --- doc/classes/Viewport.xml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml index 5996d165884..5183cd53ff6 100644 --- a/doc/classes/Viewport.xml +++ b/doc/classes/Viewport.xml @@ -122,11 +122,21 @@ Returns the viewport's texture. [b]Note:[/b] When trying to store the current texture (e.g. in a file), it might be completely black or outdated if used too early, especially when used in e.g. [method Node._ready]. To make sure the texture you get is correct, you can await [signal RenderingServer.frame_post_draw] signal. - [codeblock] + [codeblocks] + [gdscript] func _ready(): - await RenderingServer.frame_post_draw - $Viewport.get_texture().get_image().save_png("user://Screenshot.png") - [/codeblock] + await RenderingServer.frame_post_draw + $Viewport.get_texture().get_image().save_png("user://Screenshot.png") + [/gdscript] + [csharp] + public async override void _Ready() + { + await ToSignal(RenderingServer.Singleton, RenderingServer.SignalName.FramePostDraw); + var viewport = GetNode<Viewport>("Viewport"); + viewport.GetTexture().GetImage().SavePng("user://Screenshot.png"); + } + [/csharp] + [/codeblocks] [b]Note:[/b] When [member use_hdr_2d] is [code]true[/code] the returned texture will be an HDR image encoded in linear space.