유니티게임개발/기초공부

유니티(Unity)에서 렌더텍스처(RenderTexture) 활성화 및 해제(active, release) 사용예시

디지털콘텐츠크리에이터 2024. 10. 1. 04:47

유니티(Unity)에서 렌더텍스처(RenderTexture) 활성화 및 해제(active, release) 사용예시

렌더 텍스처(RenderTexture)는 렌더링할수있는 텍스처(textures that can be rendered to)로써 3D 장면을 텍스처로 렌더링할 수 있는 특별한 종류의 텍스처입니다.  주로 3D 장면을 특정 렌더 텍스처로 렌더링하고 결과를 텍스처로 저장하는데 사용합니다. 
https://docs.unity3d.com/ScriptReference/RenderTexture.html

렌더텍스처(RenderTexture) 활성화 및 해제

//RenderTexture 생성
RenderTexture rt = new RenderTexture(256, 256, 24);
rt.Create();

//RenderTexture를 활성화
RenderTexture.active = rt;

//카메라로 씬을 RenderTexture로 렌더링
Camera.main.targetTexture = rt;
Camera.main.Render();

//활성화된 RenderTexture로부터 텍스처 데이터 읽기
Texture2D texture = new Texture2D(rt.width, rt.height, TextureFormat.RGB24, false);
texture.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
texture.Apply();

//RenderTexture를 비활성화
RenderTexture.active = null;
Camera.main.targetTexture = null;

//사용이 끝난 RenderTexture 해제
rt.Release();

 

 

 

RenderTexture.Create
실제로 렌더 텍스처를 생성합니다(RenderTexture 생성자는 실제로 하드웨어 텍스처를 생성하지 않습니다) 기본적으로 텍스처는 처음 활성화될 때 생성되는데(RenderTexture.active) Create를 호출하면 미리 생성할 수 있습니다(텍스처가 이미 생성되어 있으면 Create는 아무 작업도 수행하지 않음)
https://docs.unity3d.com/ScriptReference/RenderTexture.Create.html

 


RenderTexture.active = rt;
RenderTexture.active는 현재 활성화된 렌더 텍스처를 지정하는 정적 프로퍼티입니다. 새로 생성한 렌더텍스처를 현재 활성화된 렌더텍스처로 설정합니다.
https://docs.unity3d.com/ScriptReference/RenderTexture-active.html

 

Camera.main.targetTexture = rt;
카메라의 대상 텍스처 속성(Camera.main.targetTexture)에 렌더 텍스처를 설정하면 카메라가 화면에 렌더링하는 대신 해당 렌더텍스처로 렌더링합니다.

 

 

Camera.main.Render();

카메라를 수동으로 렌더링합니다.
https://docs.unity3d.com/ScriptReference/Camera.Render.html

 

 

RenderTexture.active = null;
현재 활성화된 렌더 텍스처를 해제합니다.  


rt.Release();
렌더 텍스처를 해제합니다. 렌더 텍스처는 네이티브 엔진 객체(native engine object)로써 가비지 수집되지않음으로 사용이 끝나면 해제하는것이 중요합니다.
https://docs.unity3d.com/ScriptReference/RenderTexture.Release.html