Computer/그래픽스

OpenGL API

에린_1 2023. 1. 13. 16:19
728x90

ISO표준

  • 컴퓨터 그래픽스 - 하드웨어와 소프트웨어를 사용하여 물체와 물체영상을 생성, 변형, 디스플레이, 저장하는 것
  • 주전산기 독립성 - 동일한 프로그램을 가지고서 다양한 모든 하드웨어에서 사용할 수 있어야 한다.
  • 장비 독립성 - 입출력 장비의 종류가 달라도 동일 기능을 수행하기 위한 프로그램 명령은 동일해야 한다.
  • 프로그램 언어 독립성 - 프로그램 작성에 어떠한 프로그램언어를 사용해도 된다.
  • 운영자 이식성 - 새로운 프로그램 사용법을 누구라도 쉽게 터득할 수 있어야 한다.

그래픽스 표준에 의한 분류

  • 응용 프로그램 레벨 - 응용 프로그램이 지켜야 할 표준을 추상적인 수준에서 서술하는 것
  • 가상 레벨 - 출력되어야 할 내용을 기본요소를 사용하여 서술하는 것
  • 논리적 레벨 - 주어진 장비에서 해당 기본요소를 그리기 위해 필요한 과정을 서술
  • 물리적 레벨 - 개별 입출력 장비에 관한 내용 서술

ISO 그래픽 표준의 흐름

  • GKS(Grahical Kernel System) - 2차원 위주, 전역 좌표계, 정규화 장치 좌표계, 장치 좌표계
  • PHIGS(Programmer’s Hierarchical Interactive Graphics System) - 3차원 모델링, 가시화, 전역 촤표계, 정규화 장치 좌표계, 시점, 가시부피

그래픽 파일

  • 비트맵 파일 - 단순히 화면 화소값을 저장
  • GKS 메타파일 - 그림을 만들어 낼 때 사용한 순차적 명령어들 저장
  • PHIGS 메타파일 - GKS 메타파일의 내용을 포함 + 응용 프로그램 레벨에서 기본 요소 사이의 관계까지 저장

 

 

그래픽 API

  • API - 함수를 이용하여 프로그램을 작성하는데 직접 활용할 수 있도록 한 라이브러리 함수
  • 직접 하드웨어를 제어하는 명령 대신 그보다 상위 개념인 라이브러리 함수를 호출함으로써 손쉽게 응용 프로그램 작성 가능
  • 응용 프로그램이 라이브러리 함수 호출 → 드라이버 소프트웨어에의해 해당 하드웨어를 제어하는 어셈블리 명령어로 바뀜

High-Level 그래픽 API

  • 그림을 그리기 위한 실제적인 세부 과정을 명시하는 대신, 물체를 정의하고 물체 사이의 관계를 묘사함으로써 프로그램 작성 완료

Low-Level 그래픽 API

  • 물체를 구성하는 기본요소의 정의부터 시작해서 실제 그림을 그리는 세부적인 과정을 일일히 명시
  • 그래픽 메모리, 그래픽 가속 칩 등 하드웨어와 밀접함 : 하드웨어 성능을 최대한 발휘 가능

 

API 레벨

API 발전과정

 

GL 설계원리

  • 범용성
    • 대부분의 하드웨어에서 실행가능
    • 소프트웨어 면에서 운영체제 무관하게 설계
  • 효율성
    • 그래픽 프로세서 칩이나 프레임 버퍼 등 그래픽 하드웨어의 가속 기능을 최대한 발휘하기 위해 호환성 지님
  • 독립성
    • 기능간의 독립성이 보장됨
  • 완전성
    • 하드웨어 기능을 대부분 수용한다.
    • 공통된 기능이 아닌 특정 하드웨어 기능에 대해서는 ARB확장 형태로 명령어 제공
  • 상호 작업성

파이프라인과 상태변수

  • 파이프라인
    • 그래픽 처리 작업을 기능별로 세분하여 이를 순차적으로 배치한 것
    • GPU의 처리속도를 획기적으로 개선한 것
    • 파이프라인 구조를 활용하면 모든 서브 프로세서가 동시에 가동되기 때문에 전체 처리속도가 빨라진다(서브 프로세싱은 하드웨어로 구현된다)
  • 상태변수
    • 상태변수(=그래픽 컨텍스트) - 물체가 어떻게 그려져야 할지를 표현
    • GL은 단짖 서브 프로세서에 파라미터를 전달하는 일을 함
  • 시스템 테이블
    • GL 프로그램이 상태변수 값을 설정하면 그 값이 상태 테이블에 기록되고, 개별 파이프라인 프로세서는 필요한 상태변수 값을 이 테이블로부터 읽어서 프로세스를 실행한다.
  • 모드(Modes)
    • 상태변수보다 포괄적인 개념
    • 조명, 텍스처 등과 같은 종류의 상태변수
    • 조명 모드를 비활성화하면 조명에 관련된 모든 상태변수가 자동으로 비활성됨
  • 명령어
    • GL은 처리속도를 높이기 위해 객체지향을 채택하지 않음
  • 프로그램 구성요소

 

  • 지엘 라이브러리(GL : OpenGL Core Library)
    • 렌더링 기능을 제공하는 함수 라이브러리
  • 지엘 유틸리티 라이브러리(GLU : OpenGL Utility Library)
    • 지엘 라이브러리의 도우미
    • 다각형 분할(Tessellation), Projection, Quadric Surface, NURBS(Non-Uniform Rational B-Spline) 등 고급기능을 제공하는 함수로서 GL 함수로 작성되어있음
  • 지엘 유틸리티 툴 킷(GLUT : OpenGL Utility Toolkit)
    • 사용자 입력을 받아들이거나 화면 윈도우를 제어하기 위한 함수로서 윈도우 운영체제가 실행하는 기능들
    • GL 프로그램과 그 프로그램이 돌아가는 윈도우 운영체제 사이의 인터페이스
    • GL의 일부가 아닌 Freeware
  • GLUT와 윈도우 운영체제
    • 운영체제 역할
      • 프로그램 실행 시 프로그램을 제어
      • GL 프로그램 실행의 시작 명령을 내리는 것도 운영체제
      • GL 요청에 다라 새로운 위도우 만들기
      • GL의 렌더링 작업이 끝났을 떄 윈도우 안에 그 결과를 보이는함수를 호출
      • 마우스 클릭시 상호작용에 필요한 함수 호출

 

 

728x90

'Computer > 그래픽스' 카테고리의 다른 글

투상변환과 뷰포트변환  (0) 2023.01.17
모델 변환과 시점 변환  (0) 2023.01.17
그래픽 프로세서  (0) 2023.01.13
그래픽스 구성요소  (0) 2023.01.13
컴퓨터 그래픽스란?  (0) 2023.01.13