구현 내용
파형을 그리고, 오브젝트를 그리는 작업을 진행하였다.
UI 클래스 구조
특이점
화면의 전체 사이즈를 기준으로하는 렌더링은 Default의 약자인 "D" 접두사를 붙여 클래스 이름을 구성하였다.
로컬 좌표를 기준으로 하는 렌더링은 Local의 약자인 "L" 접두사를 붙여 클래스 이름을 구성하였다.
WaveLineRenderer
WaveLineRenderer은 Wave 파형을 그려주는 도구이다. 44100 개 이상의 파형 데이터를 화면상에 그려주기 위해서는 그래픽 메모리에 Vertex를 고정 해 줘야 한다. GL Vertex를 통해서 화면 상에 직접 그릴 수 있긴 하지만, CPU를 사용하여 44100개를 반복하며 초당 60개를 그리기에는 병목 현상이 발생할 수 있으므로, GPU 메모리에 COPY하여 그리기를 한 번에 요청하는 것이 좋다고 생각했다. 초기 init 될 때, double[] waves 를 2D 좌표로 투영한 뒤 이를 BindBuffer 와 BufferData 로 적용 해 준다.
로컬 좌표 렌더러
로컬 좌표 렌더러는 특정 오브젝트나 데이터를 출력할 때 그 오브젝트 시점을 기준으로 내부에 출력을 할 때 사용하는 것을 의도했다. 모든 컴포넌트 렌더러를 직접 화면에 2D 좌표를 계산하며 출력할 수는 없으므로, 오브젝트가 출력되는 상대 좌표 내에서 다시 출력할 수 있도록 하였다.
DSingleTrackTextureRenderer
전체 화면 영역을 기반으로 출력
LSingleObjectTextureRenderer
트랙을 기반으로 로컬 좌표계
TrackTextureRenderer의 Coordination 대리자에 의거
LWaveLineRenderer Component
오브젝트를 기반으로 로컬 좌표계
LSingleObjectTextureRenderer의 좌표를 대리 해주는 Coordination 대리자에 의거
다음 목표
PD Layer의 음향 처리 클래스와 연동한다.