목록 표시

Display list

표시 목록(또는 표시 파일)은 출력 이미지를 정의하는 일련의 그래픽 명령입니다.이미지는 다양한 프리미티브를 결합하는 명령을 실행하여 생성(렌더링)됩니다.이 액티비티는 대부분의 경우 CPU를 디스플레이 유지보수의 오버헤드로부터 해방시키기 위해 시스템의 CPU로부터 일부 또는 완전히 독립된 전용 디스플레이 또는 처리 하드웨어에 의해 실행되며 CPU 능력 이상의 출력 기능 [1][2]또는 속도를 제공할 수 있습니다.

벡터 그래픽스 표시같이 프레임 버퍼가 없는 표시장치에 대해서는 출력을 유지하고 애니메이션을 하기 위해 1초 간격으로 명령어를 실행했다.최신 시스템에서는 명령이 변경되거나 출력을 새로 고치기 위해(예: 최소화된 창을 복원하는 경우)에만 명령을 실행하면 됩니다.

표시 목록은 2차원 및 3차원 장면을 모두 나타낼 수 있습니다.표시 목록을 사용하여 장면을 저장하는 시스템을 즉시 모드 시스템이 아니라 보존 모드 시스템이라고 합니다.

진정한 디스플레이 목록을 가진 가장 초기의 인기 있는 시스템 중 하나는 Atari 8비트 패밀리입니다.표시 리스트(Atari 용어에서는 실제로 그렇게 불립니다)는 이러한 머신에서 사용되는 비디오 공동 프로세서인 ATIC의 일련의 명령입니다.이 프로그램은 컴퓨터 메모리에 저장되고 실시간으로 실행되며, 6개의 텍스트 모드와 8개의 그래픽 모드 중 하나이며, 화면의 어떤 부분을 수평 또는 수직으로 미세 스크롤할 수 있는지 지정할 수 있으며, 디스플레이 목록 인터럽트(다른 시스템에서는 래스터 인터럽트 또는 HBI라고 함)를 트리거할 수 있습니다.

Amstrad PCW 제품군에는 '롤러 RAM'이라는 디스플레이 목록 기능이 포함되어 있습니다.이것은 RAM에 들어가는 256개의 16비트 벡터로 구성된 512바이트 RAM 영역이며, 720 × 256픽셀 디스플레이의 각 행에 대해 1개씩입니다.각 벡터는 라인의 720픽셀 상태를 유지하는 90바이트의 흑백픽셀 위치를 식별합니다.8픽셀 상태의 90바이트는 실제로 8바이트 간격으로 간격이 있기 때문에 픽셀 데이터의 각 바이트 사이에는 사용되지 않는 바이트가 7개 있습니다.이는 텍스트 지향 PCW가 RAM에 일반적인 화면 버퍼를 구성하는 방식에 적합합니다.첫 번째 문자의 8행은 첫 번째 8바이트에 저장되고 두 번째 문자의 행은 다음 8바이트에 저장됩니다.Roller RAM은 3.4MHz Z80이 23KB 디스플레이 버퍼를 '수작업으로' 위로 이동하는 속도가 너무 느리기 때문에 디스플레이 스크롤 속도를 높이기 위해 구현되었습니다.화면 새로 고침 시작 시 사용되는 롤러 RAM 시작 엔트리는 Z80 쓰기 가능 I/O 레지스터에 의해 제어됩니다.따라서 이 I/O 레지스터를 변경하는 것만으로 화면을 스크롤할 수 있습니다.

하드웨어에서 디스플레이 목록과 같은 기능을 사용하는 또 다른 시스템은 Amiga로, 우연은 아니지만 Atari 8비트 커스텀 하드웨어를 만든 일부 사람들에 의해 설계되었습니다.Amiga 디스플레이 하드웨어는 그 시대에 비해 매우 정교했으며, 디스플레이 모드를 생성하도록 지시하면 다음 스캔 라인마다 자동으로 실행됩니다.또한 컴퓨터에는 "Copper"라고 불리는 전용 보조 프로세서가 포함되어 있어 디스플레이와 동기하여 하드웨어 레지스터를 수정하기 위한 간단한 프로그램 또는 "Copper List"를 실행했습니다.동선 리스트의 지시에 의해서, 동선으로부터 디스플레이가 화면의 특정 위치에 도달할 때까지 대기하고 나서, 하드웨어 레지스터의 내용을 변경할 수 있습니다.사실상 래스터 인터럽트 서비스 전용 프로세서였습니다.Cooper는 Workbench에서 여러 디스플레이 모드(모니터의 여러 해상도와 컬러 팔레트)를 혼합하기 위해 사용되었으며, 화면에 무지개와 그라데이션 효과를 내기 위해 수많은 프로그램에서 사용되었습니다.Amiga Copper는 또한 스프라이트 엔진 미드프레임을 한 번의 지연 스캔 라인만으로 재구성할 수 있었습니다.이를 통해 Amiga는 추가 스프라이트가 7개 이상의 다른 스프라이트와 스캔 라인(또는 스캔 라인 간격)을 공유하지 않는 한 8개 이상의 하드웨어 스프라이트를 그릴 수 있었습니다. 즉, 적어도 1개의 스프라이트가 그리기를 완료한 경우 화면 아래에 다른 스프라이트를 추가할 수 있었습니다.또한 최신 32비트 AGA 칩셋은 동일한 멀티플렉싱을 유지하면서 더 큰 스프라이트(행당 더 많은 픽셀)를 그릴 수 있었습니다.또한 Amiga에는 전용 블록 쉬프터("블리터") 하드웨어가 있어 더 큰 물체를 프레임 버퍼에 넣을 수 있습니다.이것은 스프라이트 대신 또는 스프라이트 외에도 자주 사용되었습니다.

보다 원시적인 시스템에서는 표시 리스트의 결과를 시뮬레이션 할 수 있지만, 디바이스에 의해 실행되는 일련의 렌더링 명령어보다 비디오 디바이스 내의 특정 표시 모드, 컬러 컨트롤 또는 기타 시각 효과 레지스터에 CPU를 많이 사용하는 쓰기를 희생한다.따라서 CPU 구동 디스플레이 생성 실행 전 또는 실행 중에 다른 렌더링 프로세스를 사용하여 표시되는 이미지를 생성해야 합니다.많은 경우 프레임 간에 이미지가 수정되거나 재렌더됩니다.이미지는 CPU 구동 표시 코드의 정확한 실장 방법에 따라 다양한 방법으로 표시됩니다.

CPU 구동 비디오를 필요로 하는 이러한 오래된 머신에서 가능한 결과의 예로는 Commodore 64/128의 FLI 모드나 ZX Spectrum에서의 Rainbow Processing 등의 효과가 있습니다.

폐지

디스플레이 리스트는 고정 함수 그래픽스 파이프라인의 명령어 세트를 나타내기 때문에 현대의 그래픽 아키텍처에서는 대부분 사용되지 않습니다.최신 아키텍처에서는 그래픽스 성능을 CPU에 연결하지 않기 위해 셰이더와 정점 버퍼 개체를 사용합니다.단, VulkanDirectX 12와 같은 저레벨 그래픽스 API는 표시 목록을 명령어버퍼 및 명령어목록 형식으로 표시합니다.

레퍼런스

  1. ^ OpenGL programming guide : the official guide to learning OpenGL, version 1.1 (2nd ed.). Addison Wesley. ISBN 978-0201461381.
  2. ^ "Chapter 7 - OpenGL Programming Guide". www.glprogramming.com. Addison-Wesely. Retrieved 18 November 2018.

「 」를 참조해 주세요.