비트 블릿

Bit blit

비트블릿(BITBLT, BITBLT, BitBLT, BitBLT, BitBLT, BitBlt 등)은 컴퓨터 그래픽스에서 일반적으로 사용되는 데이터 연산이며,[1] 부울 함수를 사용하여 여러 비트맵을 하나로 결합합니다.

조작에는 적어도 2개의 비트맵이 포함됩니다.소스(또는 "포그라운드")와 수신처(또는 "백그라운드")가 있으며, 또 다른 비트맵은 종종 "마스크"라고 불립니다.결과는 네 번째 비트맵에 기록될 수 있지만, 종종 대상으로 대체됩니다.각 픽셀은 지정된 래스터 연산(ROP)에 따라 비트 단위로 결합되어 결과가 수신처에 기록됩니다.ROP는 기본적으로 부울식입니다.가장 명백한 ROP 는, 행선지를 송신원으로 덮어씁니다.다른 ROP에는 AND,[1] OR, XOR 및 NOT 연산이 포함될 수 있습니다.Commodore Amiga의 그래픽 칩셋(및 기타)은 가능한 256개의 부울 함수를 사용하여 3개의 소스 비트맵을 결합할 수 있습니다.

현대의 그래픽 소프트웨어는 비트 연산을 알파 합성 등의 효과에 사용되는 보다 일반적인 수학 연산으로 거의 완전히 대체했습니다.이는 컬러 디스플레이의 비트 단위 연산은 일반적으로 조명 또는 잉크의 물리적 조합과 유사한 결과를 생성하지 않기 때문입니다.일부 소프트웨어는 여전히 XOR를 사용하여 대화형 강조 직사각형 또는 영역 경계를 그립니다. 이 작업을 통해 이미지를 컬러링하면 비정상적인 결과 색상을 쉽게 볼 수 있습니다.

오리진스

이름은 BitB에서 유래했습니다.비트 경계 블록 전송을 나타내는 Xerox Alto 컴퓨터의 LT 루틴.Dan Ingalls, Larry Tesler, Bob Sproul Diana Merry는 1975년 11월 Xerox PARC에서 Smalltalk-72 시스템을 위해 이 작업을 프로그래밍했습니다.Dan Ingalls는 나중에 마이크로코드로 재설계된 버전을 구현했습니다.

다양한 비트 블릿 연산을 위한 빠른 방법의 개발은 컴퓨터 디스플레이가 문자 그래픽(텍스트 모드)에서 모든 것에 래스터 그래픽(비트맵)으로 발전하는 계기가 되었습니다.2D 그래픽스(비디오 게임 콘솔 등)의 성능에 크게 의존하는 기계에는 블리터라고 불리는 특수 목적 회로가 있는 경우가 많습니다.

마스크된 blit 구현 예시

블리팅의 일반적인 용도는 배경에 투명 스프라이트를 렌더링하는 입니다.이 예에서는 배경 영상, 스프라이트 및 1비트 마스크가 사용됩니다.마스크가 1비트이기 때문에 알파 블렌딩을 통한 부분 투명성은 없습니다.

마스크의 각 비트를 검사하고 마스크가 설정된 경우에만 스프라이트에서 픽셀을 복사하는 루프는 모든 픽셀에 정확히 동일한 작업을 적용할 수 있는 하드웨어보다 훨씬 느립니다.대신 마스크된 blit은 AND 및 OR 래스터 연산을 사용하여 2개의 일반 BitBlit 연산을 사용하여 구현할 수 있습니다.

배경 이미지 스프라이트(왼쪽) 및 마스크(오른쪽)
Blit back.png XBlit dot.png

스프라이트는 다음과 같이 이미지 위에 다양한 위치에 그려집니다.

의도한 결과
XBlit final.png

기술.

사이다를 준비할 때 색깔이 굉장히 중요해요.마스크 픽셀은 해당 스프라이트 픽셀이 표시될 경우 0(검은색)이고 배경을 보존해야 할 경우 1(흰색)입니다.스프라이트는 투명해야 할 위치에 0(검은색)이어야 하지만, 비투명 영역에서는 검은색을 사용할 수 있습니다.

첫 번째 블릿에서는 래스터 연산자 AND를 사용하여 마스크백그라운드로 블릿된다.0의 AND 값은 모두 0이고 1의 AND 값은 변경되지 않으므로 배경의 나머지 부분은 그대로 두고 실제 스프라이트가 나타나는 검은색 영역이 생성됩니다.

첫 번째 블릿 결과
XBlit and.png

두 번째 블릿에서는 OR의 래스터 연산자를 이용하여 새롭게 변경된 배경 위에 스프라이트를 블릿한다.0으로 OR된 값은 변경되지 않으므로 배경은 영향을 받지 않으며 검은색 영역은 실제 스프라이트 이미지로 채워집니다.

최종 결과
XBlit final.png

또한 흰색 바탕의 스프라이트와 흰색 온 블랙 마스크를 사용하여 동일한 효과를 얻을 수 있습니다.이 경우 마스크가 먼저 ORED되고 다음으로 스프라이트 ANDED가 됩니다.

블리팅과 하드웨어 스프라이트 비교

블리팅은 하드웨어 스프라이트 도면과 유사하며 두 시스템 모두 화면 상의 [2]다른 위치에 패턴(일반적으로 정사각형 영역)을 재현합니다.하드웨어 스프라이트는 별도의 메모리에 저장되므로 메인 디스플레이 메모리를 방해하지 않는다는 장점이 있습니다.이것에 의해, 디스플레이에 영향을 주지 않고, 「배경」을 덮으면서, 디스플레이 주위를 이동할 수 있습니다.

블리팅은 화면 상에서 동일한 유형의 패턴을 이동시키지만 디스플레이의 나머지 부분과 동일한 메모리에 쓰기 때문에 이동됩니다.즉, 화면에 패턴을 배치할 때마다 디스플레이가 "아래"로 덮어쓰거나 "손상"됩니다.파손을 2회 블리팅하여 제거하고 다시 비트를 새로운 위치에 배치함으로써 이 파손을 해결합니다.필요한 패턴을 VRAM 오프스크린에 저장하고 다른 영역을 스택의 일종으로 예약하여 해당 디스플레이 섹션을 일시적으로 저장하는 방법이 있습니다.그래픽 칩에 전용 VRAM이 탑재되어 있는 경우, 이것은 시스템 RAM에 가해지는 부하를 경감할 뿐만 아니라 오래된 PC 시스템의 대역폭 제한 ISA 확장 슬롯에도 도움이 됩니다.

그러나 이를 최적화하는 방법은 여러 가지가 있습니다.화면의 넓은 영역이 패턴으로 대체될 경우, 각 패턴을 개별적으로 지우는 대신 배경을 화면에 밝게 하는 것이 더 효율적일 수 있습니다.변형에는 화면을 세그먼트로 나누고 패턴이 그려진 세그먼트만 지웁니다.이 기술은 더러운 직사각형으로 알려져 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Sanchez, Julio; Maria P. Canton (2007). "Displaying Bit-Mapped images". Software solutions for engineers and scientists. CRC Press. p. 690.
  2. ^ "Framebuffer - OpenGL Wiki". www.khronos.org. Retrieved 23 June 2020. A blit operation is a special form of copy operation; it copies a rectangular area of pixels from one framebuffer to another. This function also has some very specific properties with regard to multisampling.

외부 링크