[그래픽스] 파이프라인과 상태 변수

파이프라인과 상태 변수

지엘 입출력과 파이프라인

지엘의 입력은 기하 기본 요소(정점)와 영상 기본 요소로 구성된다.

여기서 기하 기본 요소는 3차원의 점, 선 , 다각형을 말하며 영상 기본 요소는 2차원 비트맵 여상을 말한다. 지엘의 출력은 입력된 기하학적 요소로 구성된 물체를 렌더링한 모습으로 필요시 입력된 영상 기본 요소가 렌더링에 반영된다.

위의 그림에서 파이프라인 구조는 일종의 분업 체제라고 본다.

즉 그래픽 처리 작업을 기능별로 세분하여 이를 순차적으로 배치하는 것인데, 이러한 분업의 장점은 전체적인 처리 속도 향상에 있따. 어떤 데이터가 프로세스 1로 입력 되어 처리가 끝나면 그 결과는 프로세서 2로 전달된다. 여기서 중요한 것은 처리가 끝났다고 해서 프로세서 1이 쉬지 않는다는 점이다. 프로세서 2가 데이터를 처리하는 도중 자신은 할 일이 없으므로 또 다시 새로운 입력을 받아서 처리할 수 있기 때문이다.

파이프라인

파이프라인은 크게

입력 -> 변환 프로세서 -> 투상 프로세서 -> 절단 프로세서 -> 래스터 프로세서 -> 출력

와 같은 서브 프로세서로 이루어져 있다.

일반적으로 이러한 서브 프로세싱은 모두 하드웨어에 의해 구현된다. 결국 파이프라인 구조에 의해 동시 작업이 이루어진다는 점, 서브 프로세싱이 하드웨어로 구현된다는 점으로 인해 그래픽 처리 속도가 획기적으로 빨라진다.

여기서 중요한점은 지엘은 이처럼 하드웨어적으로 고정된 파이프라인 처리 순서를 변경할 수 는 없다는 것이다.

지엘은 단순히 서브 프로세서에 파라미터를 전달하는 일을 한다. 지엘은 거대한 상태 변수 기계이다.

상태변수

물체가 어떻게 그려져야 할 것인지를 표현하는 변수들을 말하며, 그래픽 콘텍스트라고도 불린다.

개별 프로세서는 상태변수의 값을 기준으로 실행된다. 결국 지엘은 상태변수의 값을 명시하는 것에 불과하다.

여기서 기본 요소에 한꺼번에 여러 속성을 적용하기 위한 방법 중 하나는 명령어에 파라미터 리스트를 부과하는 법이다.

이때 중요한 점은 파라미터 리스트를 부과한 뒤에 리스트 중 한 속성만 변경하려고 해도 기존에 부과한 속성들을 똑같이 나열해줘야 한다.

시스템 테이블

ISO 표준은 이런 불편을 해소하기 위하여 시스템 테이블을 권장한다. 시스템 테이블에는 현재 지정된 모든 속성 값들과 테이블의 속성 값으 ㄹ검색하거나 변경시키는 함수가 존재한다.

ex)

setLineStyle(2)는 현재의 스타일 속성을 2번으로 바꾸라는 명령이다.

setLineWidth(4)는 선의 두께 속성을 기본 두께의 4배로 바꾸라는 명령어다.

이 방식은 명령어가 호출되면 그 즉시 현재 설정된 스타일, 두께 색상 값을 시스템 테이블에서 찾아 자동으로 적용된다.

위의 상태 변수는 iso 기준으로 속성에 해당하고, 상태 테이블은 시스템 테이블에 해당한다.

결과적으로 지엘은 간접적으로 파이프라인에 작용한다.