본문 바로가기
UnrealEngine5/C++

UTextureRenderTarget2D 관련 기본적인 함수들 정리

by 개발의 묘미(GaeMyo) 2024. 11. 22.
SMALL

1. BeginDrawCanvasToRenderTarget

/**
 * Returns a Canvas object that can be used to draw to the specified render target.
 * Canvas has functions like DrawMaterial with size parameters that can be used to draw to a specific area of a render target.
 * Be sure to call EndDrawCanvasToRenderTarget to complete the rendering!
 */
UFUNCTION(BlueprintCallable, Category="Rendering", meta=(Keywords="BeginDrawCanvasToRenderTarget", WorldContext="WorldContextObject", UnsafeDuringActorConstruction="true"))
static ENGINE_API void BeginDrawCanvasToRenderTarget(UObject* WorldContextObject, UTextureRenderTarget2D* TextureRenderTarget, UCanvas*& Canvas, FVector2D& Size, FDrawToRenderTargetContext& Context);

UCanvas 객체를 통해 렌더 타겟에 데이터를 그릴 준비를 시작함.

Unreal Engine의 렌더 타겟 기반 작업은 GPU로 데이터를 기록하는 구조이며

렌더 타겟에 무언가를 기록하기 전 GPU상태를 초기화하기 위해 실행되어야 하는 함수.

 

 

 

 

2. EndDrawCanvasToRenderTarget

/**  
 * Must be paired with a BeginDrawCanvasToRenderTarget to complete rendering to a render target.
 */
UFUNCTION(BlueprintCallable, Category="Rendering", meta=(Keywords="EndDrawCanvasToRenderTarget", WorldContext="WorldContextObject", UnsafeDuringActorConstruction="true"))
static ENGINE_API void EndDrawCanvasToRenderTarget(UObject* WorldContextObject, const FDrawToRenderTargetContext& Context);

GPU가 렌더링 작업을 종료 및 완료했다고 노티파이 해 주는 함수.

GPU의 안정적인 데이터 처리를 위해 Unreal Engine에서의 명시적인 렌더링 작업 시작, 종료가 필요함.

호출해주지 않으면 렌더링 작업이 GPU상에서 계속해서 대기 상태로 남을 수 있음.

 

 

 

 

3. ClearRenderTarget2D

/** 
 * Clears the specified render target with the given ClearColor.
 */
UFUNCTION(BlueprintCallable, Category="Rendering", meta=(Keywords="ClearRenderTarget", WorldContext="WorldContextObject", UnsafeDuringActorConstruction="true"))
static ENGINE_API void ClearRenderTarget2D(UObject* WorldContextObject, UTextureRenderTarget2D* TextureRenderTarget, FLinearColor ClearColor = FLinearColor(0, 0, 0, 1));

이전 프레임의 데이터를 삭제하고 렌더 타겟을 초기화 해 새로운 데이터를 기록할 준비를 함.

 

 

 

 

4. CreateRenderTarget2D

/**
 * Creates a new render target and initializes it to the specified dimensions
 */
UFUNCTION(BlueprintCallable, Category="Rendering", meta=(WorldContext="WorldContextObject"))
static ENGINE_API UTextureRenderTarget2D* CreateRenderTarget2D(UObject* WorldContextObject, int32 Width = 256, int32 Height = 256, ETextureRenderTargetFormat Format = RTF_RGBA16f, FLinearColor ClearColor = FLinearColor::Black, bool bAutoGenerateMipMaps = false, bool bSupportUAVs = false);

이름 그대로인 함수.

필자는 이 함수를 놓쳐서 번거롭게 UTextureRenderTarget2D자료형의 일반 변수를 코드로 선언해 놓고

언리얼 에디터에서 직접 생성해 손으로 넣어주고 있었음ㅎ.

반응형
SMALL