안녕하세요, 개발자 Sean입니다.
오늘부터 본격적으로 OpenGL과 WebGL에 대해 공부를 시작해보려 하는데요,
API 공부에 앞서 OpenGL의 역사에 대해 알 수 있는 좋은 책이 있어 번역해 옮겨보려고 합니다.
Preface: What is OpenGL?
OpenGL이란 무엇일까요? 가장 기초적인 설명을 드리자면, OpenGL은 개발자가 그래픽 하드웨어와 소통할 수 있도록 도와주는 소프트웨어 인터페이스라고 할 수 있습니다. 물론 이것보다 더 많은 설명이 필요합니다. 그래서 이 책에서는 독자들을 위해 OpenGL의 디테일한 부분까지 설명하고 있습니다. 두 손으로 직접 코딩하기에 앞서 독자 여러분들은 컴퓨터 그래픽과 OpenGL의 역사에 대해 조금 알고 갈 필요가 있습니다.
서문에서는 다음과 같은 주제를 다루게 될 것입니다:
- 컴퓨터와 컴퓨터 그래픽의 시작
- OpenGL은 무엇이고 어떻게 발전되어 왔는가
- 컴퓨터 그래픽은 어떻게 동작하는가
- 필요한 하드웨어 및 소프트웨어
In The Beginning
글, 그림 혹은 수화든 간에 이미지는 정보를 전달하고 역사를 설명하는데 항상 주요한 도구로 사용되어 왔습니다. 시각적 피드백의 필요성은 너무나도 중요하기 때문에 무언가를 보기 전까지는 존재를 인지하기가 어려울 정도이죠. 예를 들어 박테리아는 17세기 현미경을 발명한 Antonie van Leeuwenhoek에 의해 발견되기 전까지는 순전히 추측에 불과했지만 지금은 현대 과학의 중요한 부분을 차지하고 있습니다.
컴퓨터 데이터는 전기 신호에 불과합니다. 박테리아와 마찬가지로 눈으로는 볼 수 없죠. 따라서 이러한 데이터를 표시하는 방법이 필요했고 초기 컴퓨터 과학자들은 기계로부터 시각적 피드백을 판 위에 나열된 전구 혹은 펀치 카드라고 불리는 구멍 뚫린 종이를 통해 얻었습니다.
Display: Catheode Ray Tubes
1897년 독일 Ferdinand Braun은 스크린에 이미지를 표현하는 CRT라는 진공관을 발명했습니다. 아마 독자분들도 가장 최근까지 보편적으로 사용되었던 유리로 된 텔레비전이나 컴퓨터 모니터를 통해 사용해 본 적 있을 겁니다.
CRT는 텔레비전이나 오실리스코프 출력으로 이미 사용되고 있었지만 아무도 이 기술을 컴퓨터에 적용할 생각을 하진 않았습니다. 가장 처음 컴퓨터의 출력을 위해 사용한 때가 1951년 MIT에서 미 해군 조종 시뮬레이터를 위해 Whirlwind 컴퓨터를 개발했을 때였습니다. CRT는 컴퓨터 프로그램의 출력을 펀치 카드나 램프 혹은 출력물 없이 즉시 확인할 수 있도록 해주었습니다.
하지만 Whirlwind 프로젝트는 높은 운영비용으로 인해 성공적이진 못했습니다. 하지만 이 프로젝트는 CRT를 컴퓨터 기기의 시각적 출력 장치로 소개하며 컴퓨터 그래픽에 있어서 중요한 첫 발자국을 떼었습니다. CRT는 컴퓨터 그래픽의 발전에 있어 주요 장치가 되었고 평면 패널 기술이 등장하기까지 50년간 출력 창치로 사용되었습니다.
The First Interactions
CRT는 컴퓨터의 출력을 화면에 표시할 수 있도록 해주었지만, 단순히 컴퓨터의 현재 상태를 텍스트로 표현하는데 그쳤습니다. 아무도 컴퓨터를 순수히 연산장치 이상으로 여기는 사람이 없었기 때문에 한동안 이는 당연하게 여겨졌었습니다. 그러다 1961년 Ivan Sutherland가 MIT 논문으로 스케치 패드라는 컴퓨터 프로그램을 만들면서 컴퓨터를 바라보는 시각이 급격하게 변하게 되었습니다.
Sutherland의 스케치 패드는 사용자가 기하학적 모양을 라이트 펜을 이용해 CRT에 실시간으로 그릴 수 있도록 했습니다. 이는 그때 당시 굉장히 파격적인 프로그램이었으며 수년이 지나도 그랬습니다. 이는 컴퓨터 그래픽을 정의했을 뿐만 아니라 GUI의 선구자로 평가되며 객체 지향 프로그래밍 개념의 토대를 마련했습니다. 스케치 패드는 컴퓨터가 더 이상 계산기가 아닌 기하학적 모양을 표시할 수 있는 장치로 패러다임의 변화를 만들어 냈습니다.
1968년 Ivan Sutherland와 Bob Sproull은 "The Sword of Damocles"라는 지금의 관점에서 보면 가상현실의 선구자격인 프로그램을 공동으로 개발합니다. 이 시스템은 간단한 3차원 와이어프레임 모델을 무게 때문에 천장에 메단 헤드셋을 통해 보여주었습니다. 이는 컴퓨터에 의해 만들어진 첫 3D 그래픽이었습니다.
Smaller, Faster, Cheaper
물론 컴퓨터 그래픽 기술이 펀치카드에서 상호작용 가능한 그래픽으로 갑작스레 발전하게 된 것은 아닙니다. 컴퓨터는 거대한 크기의 기계에서 오늘날 우리가 사용하고 있는 작은 디바이스로 점진적으로 진화해 왔습니다.
1940년부터 1950년 중반까지 컴퓨터는 프로세서로 진공관을 이용했기 때문에 방을 모두 차지할 만큼 크기가 컸습니다. 진공관은 컴퓨팅에 필수적인 스위칭과 같이 전자적 신호를 다른 신호로 변경하는데 필요한 장치였습니다. 컴퓨터 조립에 꼭 필요했던 이 부품은 굉장히 컸고 또한 뜨거웠습니다. 따라서 이 시기에 만들어진 기계는 모두 다 달랐으며 프로그램은 다른 기계에서 호환 불가능했습니다. 이 시기를 보통 1세대 컴퓨터라고 부르며 현대 컴퓨터 공학의 첫걸음으로 평가됩니다. 위에서 언급했던 펀치 카드와 램프를 출력으로 사용했던 시기가 바로 1세대이며 컴퓨터 그래픽과는 아직 연관이 적습니다.
1950년 중반 트랜지스터가 진공관을 대체하기 시작하면서 더 작고 빠르며 싼 그리고 에너지 효율이 좋은 컴퓨터를 만들기 시작했고 이를 2세대 컴퓨터라고 부릅니다. 트렌지스터는 작은 사이즈를 통해 컴퓨터를 작게 만들었을 뿐만 아니라 일반 전자 산업에도 새로운 시대를 열었습니다. 예를 들어, 라디오는 이전까지는 무거운 stationary 박스형태였지만 이후로 배터리로 전력을 공급받고 휴대가 가능해 졌습니다.
하지만 트렌지스터 그 차체로는 컴퓨터에 혁신적인 변화를 이끌지 않았습니다. 1960년 중반 집적회로라고 불리는 새로운 기술이 3세대 컴퓨터 시대를 열었습니다. 집적회로는 기존에 별개의 여러 트랜지스터에서 행해지던 기능을 단 하나의 칩에서 처리되도록 소형화되었습니다. 3세대 컴퓨터 기간 동안 많은 컴퓨터들이 키보드, 모니터 그리고 운영체제라는 새로운 타입의 소프트웨어가 장착되기 시작했습니다. 이 시기 주요한 운영체제로는 UNIX가 있으며 이 운영체제는 이후 수많은 운영체제에 영향을 끼치게 됩니다.
1971년 인텔에서 마이크로 프로세서를 발명하면서 컴퓨터는 또 다른 혁신을 일으키게 됩니다. 그리고 이때부터 4세대 컴퓨터가 시작됩니다. 이전까지 CPU는 수많은 직접회로가 회판위에 납땜된 형태였다면 인텔의 4004 마이크로 프로세서는 이 모든 것을 단 하나의 칩으로 해결했습니다. 저렴한 생산공정 덕에 컴퓨터는 점차 대기업이나 정부에서 이용하는 특별한 기계가 아닌 대중이 이용하는 기계로 변해갔습니다. 아직까지 마이크로 프로세서를 없애지 않았기 때문에 현재 우리들은 4세대 컴퓨터를 이용하고 있습니다.
출처: https://openglbook.com/chapter-0-preface-what-is-opengl.html
Preface: What is OpenGL? | OpenGLBook.com
On the most fundamental level, OpenGL is a software interface that allows a programmer to communicate with graphics hardware. Of course, there is much more to it than that, and you will be glad to know that this book explains the finer details of OpenGL. B
openglbook.com