내가 보려고 만든 블로그

openGL 공부 본문

OpenGL

openGL 공부

hjh1023 2022. 7. 1. 18:18
반응형

OpenGL

  • 그래픽 하드웨어의 기능 사용하게 해주는 API
  • 하드웨어 / 운영체제와 독립적으로 사용할 수 있는 인터페이스 제공
    • 그렇기 때문에 window 기능 같은 건 다른 걸 사용해야함
    • 3차원 오브젝트나 사진 같은 걸 다루는 기능도 없음
      • 점, 선, 삼각형, 패치와 같은 geometric primitive로 치환해서 사용해야함
  • 이미지를 렌더링하기 위한 OpenGL 어플리케이션의 주요 연산들
    • 그릴 data가 OpenGL의 geometric primitive의 어떤 shape인지 정하기
    • 여러 쉐이더를 통해 input primitive의 위치, 색 등의 렌더링 속성을 결정
    • input primitive의 수학적인 표현을 screen에 대한 위치로 표현한 fragment로 치환
      • rasterization이라 부름
    • rasterization에 의해 생성된 fragment들에게 fragment shader를 실행하여 fragment의 최종 색과 위치를 결정함
    • 필요하다면 추가적인 fragment 단위 연산을 수행함
      • 생성된 fragment에 해당하는 오브젝트가 시야에 존재하는지 여부
      • fragment의 색과 현재 screen에 실제 위치의 색과 섞기 등
  • OpenGL은 클라이언트-서버 시스템.
    • 프로그래머가 작성한 어플리케이션이 클라이언트
    • 그래픽 하드웨어 제조사가 작성한 OpenGL 실제 구현이 서버
    • 그래서 몇몇 OpenGL의 경우 네트워크로 연결된 서로 다른 기기에서 클라이언트와 서버가 돌 수도 있음 (X Windows System)
  • 최근에는 그래픽카드(하드웨어 그래픽스 가속기)가 OpenGL 대부분 구현하거나 CPU에 빌트인된 경우, 혹은 마더보드에 따로 회로에 빌트인 된 경우가 있음. 이 경우 어플리케이션이 클라이언트고 그래픽카드가 서버인 것임.

렌더링

-컴퓨터가 모델로부터 이미지를 생성하는 과정

* OpenGL은 rasterization 기반 시스템

* raytracing과 같은 다른 방법들도 있음

* 이 방법 쓰더라도 이미지를 출력하거나 이미지에 대한 연산을 할 때 OpenGL 쓸 수도 있음 모델 (오브젝트) * geometric primitive로 구성됨

* 점 * 선 * 삼각형 (버텍스로 정의됨) 

쉐이더 * 그래픽카드가 실행하는 특수한 함수 * GPU 전용 작은 프로그램이라고 생각하면 됨

* OpenGL 내부에 쉐이더 소스코드를 GPU가 실행할 수 있게 컴파일해주는 도구들이 있음

* 6 개의 쉐이더 단계가 존재 * vertex shader (제일 흔함) * vertex data를 처리 * fragment shader (제일 흔함) * rasterizer가 생성한 fragment를 처리 픽셀 * 최종 생성된 이미지를 구성함. * 디스플레이에서 시각적으로 볼 수 있는(가시적인) 최소 단위 * framebuffer에 저장됨 * 그래픽카드가 관리하는 메모리의 한 덩어리 * 이거를 디스플레이 장치에 전달하는 것

여기보고 공부해야겠음!!

https://wikidocs.net/124131

 

01. OpenGL 소개

## 단원 목표 * OpenGL의 목적 * 컴퓨터가 생성한 사진에 대해 할 수 있는 것과 할 수 없는 것 * OpenGL 어플리케이션의 기본적인 구조 * OpenGL 렌더링 ...

wikidocs.net

 

반응형