E D R , A S I H C RSS

OpenGL스터디


skyLibrary_inclue

1. <대단� 1>. openGL기본 학습

Intro
� 페�지는 위키를 연습?할겸 제가 현제 공부중� openGL내용� 정리하기 위한 페�지입니다. 혹시 openGL� 공부하시는 분들� 참고하셔서 �움� �면 좋겠습니다.
공부하는 �서는 openGL superbible 3� 번역서 + openGL Game programming �권으로 하고 있습니다. 아마 openGL superbible� �번달� 5� �서가 해외�서 나오는 걸로 알고 있는�, �걸 보시는 분� 참고해서 �서를 보는것�
나�지 않겟네요.

1.1. Chapter 1.OpenGL�서 3D그래픽 기본지�

  • openGLì�„ 공부하기전ì—� ì�´ì—� 필요한 간단한? 용어와 ê°œë…�ì�„ 간단히 정리하고 들어갑시다.

1.1.1. �핑(popping)현�

  • 핵심 정리 : 2ì°¨ì›� ìƒ�ì—�서 3ì°¨ì›� 물체를 표현할때 앞면과 ë’·ë©´ì�´ 바뀌어서 ë³´ì�´ëŠ” 현ìƒ�ì�„ íŒ�í•‘ 현ìƒ�ì�´ë�¼ê³  부른다.

: example : 정육�형� 그릴때 모든 변� 그린다면 우리는 뒷면과 앞면� 착�해서 볼 수 있다. 왜�하면 뒷면� 해당하는 선들� 앞쪽� 위치한 선으로 착�할 수 있기 때문�다. 

�런 �핑현�� 3차��� 표현� 방해한다. 고로 보통 �를 제거하기위해서 뒷면� 그리는 선� 제거하여 3차��� 표현� � ��하게 한다. �렇게 뒷면� 선� 제거하는 방�� �면제거 혹� 숨겨진 표면 제거�고 한다.


�핑 현�� 예시
popping1.png
[PNG image (11.89 KB)]


�면제거 예시
poping3.png
[PNG image (10.91 KB)]


1.1.2. 랜�� & 랜�(render)

  • 핵심정리 : 3ì°¨ì›� 사물ì—� 대한 정보를 가지고 화면(2ì°¨ì›�)ì—� 표시하는 것ì�„ ëžœë�”(render)한다ë�¼ê³  ë§�하고 ëžœë�”ë§�ì�´ë�¼ê³  한마디로 ë§�한다.

1.1.3. �근법

컴퓨터화면� 2차��다. 하지만 우리가 3D게임� 할때 보면 그 내용물� 마치 3차�� 물체처럼 보�다. 하지만 실제로는 내용물� 2차��� 것� 3차�처럼 보�게 만든것��다. 그렇다면 어떻게 2차���것� 3차���것처럼 보�게 만들 수 있�까? 여러가지 방법� 잇지만 그중� 하나는 �근법� 사용한다는 것�다. �근법�란 가까히 있는 것� �게 멀리있는것� 조그마하게 표현하는것� �한다. � 정확히 �하�면 선사�� ��를 조절하여 3차�효과를 내는 기법� �한다.
�근법� 대표�� 예로는 우리가 수학� 배울때 쉽게 보는 정육�형 그림�다.

1.1.4. 색�과 조명 ,그림� 그리고 ��딩

3차��� 요소를 � �드러지게 표현하기 위해서는 ��딩� 사용하면 �다. ��딩�란 입체�� 물체� ���나 색� �기 등� 잘 조절하여 표면� 입히는 기법� �한다. �런 기법� 통해서 정육�형같� 경우는 � 면� �드�지게 표현할 수 있고, �욱 실�나는 3차��� 표현� 가능케 한다.

texture.png
[PNG image (12.08 KB)]

1.1.5. �스� 맵핑

지오메트리(�형)� �가하면 �가할 수 � 그래픽하드웨어�서 처리해야할 �들� 많아진다. 만약 �렇게 많� 지오메트리(�형)� ��히 ��딩 작업� 한다면 실시간 작업�
필요한 경우�는 ��저하� 대한 문제가 발�할 수가 있다. �런��서 �스� 맵핑� 훌륭한 대안책� � 수 있다. '''�스� 맵핑�란 � 입체 표면� 미리준비해둔 �미지를
입히는 것� �야기한다. 여기서 준비해둔 �미지를 �스��고 부르며, �스�� � 요소를 �셀 , �런 �셀� 물체� 표면� 맞춰 입히는 작업� 필터�'''
��고 부른다.


1.1.6. 블랜딩

블랜딩(blending)�란 화면�� 색�과 물체를 혼합하는 효과를 �야기한다. �를 사용하는 곳� 주로 � �미지가 겹�있는 효과를 내기위해서 사용한다. 예를 들어
거울� 비치는 내모습� 표현할때를 ��해보면 거울��는 �미지와 내 얼굴� 비치는 �미지를 합치는 효과를 ��하면 �다(반사효과).

1.1.7. 안티 알리어싱

컴퓨터는 기계어�는 언어�는 �진�� 표현(�진법�� 표현)� 사용한다. 한마디로 1011001과 같� 표현� 예시로 들 수 있는�, � 때문� 연��� 표현� 실질�으로 표현
하는것� 불가능하다. 선� 그린다고 보면 �는 �들� 집합� 해당할 ��고, 보�기� 선� ��지 �들� 조밀한 집합� 불가하다. 그리고 컴퓨터�서� ��
표현� 사�형� �으로 표현��는� 그 �유는 연��� 표현� 불가한 컴퓨터로서는 완전히 �그랗게 �어진 �� 그리기�는 실수표현� 한계가 있기 때문�다.(무한 소수�
표현� 불가하다고 하는게 � 옳� 수� 있겟다.) 그래서 사�형으로 표현�어지는 �으로 �� 그리게�면 계단현�� �어난 �� 보게 �것�다. 안티 알리어싱� �러
란 계단현�� 부드럽게 표현해주는 방법� �한다.



계단 현� 그림
antialiasing.png
[PNG image (13.94 KB)]




1.1.8. 실시간 3D & 비실시간 3D

  • 실시간 3D는 ë§�그대로 사용ìž�ê°€ 화면 구성ì—� 필요한 ë�°ì�´í„°ë¥¼ ìž…ë ¥ 즉시 화면ì—� ë°˜ì˜�하는 ë°©ì‹�ì�„ ì�´ì•¼ê¸°í•œë‹¤. 예를 들어 비행기 시뮬레ì�´ì…˜ 프로그램ì�´ë�¼ë�˜ê°€, 게임ì�„ 예시로 들 수 있다.
  • 비실시간 3D는 반대로 미리 구성해둔 3Dì�´ë¯¸ì§€ë¥¼ 화면ì—� 보여주는 ë°©ì‹�ì�„ ì�´ì•¼ê¸°í•œë‹¤. 예시로는 애니매ì�´ì…˜ì�´ë‚˜ ì˜�화를 들 수 있겠다. 고품질 3Dì�´ë¯¸ì§€ê°™ì�€ 경우는 ì�´ë¥¼ ëžœë�”ë§�하고 구성하는ë�°ì—�ë§Œ í•´ë�„ 몇시간ì�´ 걸릴 ì •ë�„로 ë§Žì�€ 시간ì�´ 소요ë�˜ëŠ”ë�°, ì�´ë¥¼ 위한게 미리 3Dì�´ë¯¸ì§€ë¥¼ 구성해ë‘�ê³  화면ì—� ë�„워주면 즉시 화면ì—� 보여줄 수 있어서 마치 실시간 ëžœë�”ë§�한 것 처럼 보여줄 수 있다.

1.1.9. 즉시모드와 보류모드(씬그래프)

실시간 3D 그래픽� 위한 API 프로그래� 방��는 즉시모드와 보류모드 �가지 방법� 있다.
  • 보류모드란, apiìƒ�ì—�서 미리 ì–´ë–¤ 기본ì �ì�¸ ë�„형ì�˜ 구성방ì‹�ì�´ë‚˜ 처리방ì‹�ì�´ ë‚´ë¶€ì �으로 정해져있는 ìƒ�태ì—�서 ë�„형ì�„ 구성하는 ë�°ì�´í„°ë¥¼ API ë˜�는 툴킷ì—� 제공함으로ì�¨ ë�„형ì�„ 구성(ì�´ë¯¸ì§€ 구성)하는 ë°©ì‹�ì�„ ì�´ì•¼ê¸°í•œë‹¤. 장면내ì�˜ 모든 물체들과 ê·¸ 사ì�´ì�˜ 관계를 미리 만들어진 ë�°ì�´í„° 구조로 만들어ë‘�는것ì�„ 씬그래프(scene graph)ë�¼ 한다.
  • 즉시모드란, 그래픽 프로세서ì—� ì§�ì ‘ì �ì�¸ 명령ì�„ 전달해서 ìƒ�태를 변경시켜 ì�´ì–´ì§€ëŠ” 모든 명령ì—� ê·¸ ìƒ�태를 ë°˜ì˜�하는 ë°©ì‹�ì�„ ì�´ì•¼ê¸°í•œë‹¤. ì�´ ë°©ì‹�ì�€ 위ì—�서 언급한 씬그래프ì—� APIì�˜ ë‚´ë¶€ì �ì�¸ ë�™ìž‘ì—�ë�„ ì�´ ë°©ì‹�ì�´ ì“°ì�¸ë‹¤. 즉시모드ì—�서 ì�´ë¯¸ 실행ë�œ 명령ì�€ ê·¸ 다ì�Œ 명령ì—� ì˜�í–¥ì�„ 받지 않는ë�° 예를 들ìž�ë©´ 화면ì—� 하늘ì—� 대한 í�´ë¦¬ê³¤ì�„ í…�스ì³�를 입힌뒤 ì�´ í…�스ì³� ìƒ�태를 해제하고, ë•…ì—� 조명효과ì—�를 주기 위해 조명효과 ìƒ�태를 변경시킨다면, 화면ì—�는 하늘ì—� 미리 구성ë�œ í…�스ì³�ì—�는 변함ì�´ 없으며 하늘ì—� 조명효과가 ë°˜ì˜�ì�´ ë�˜ê³  ë•…ì�€ í…�스ì³� ìƒ�태가 ë°˜ì˜�ì�´ 안ë�˜ê³  조명효과ì—� 대한 것만 ë°˜ì˜�ì�´ ë�  것ì�´ë‹¤.

1.1.10. 좌표체계

  • 화면ì�„ 구성하는 좌표방ì‹�ì�€ 우리가 보통사용하는 ì§�êµ�좌표계(ë�°ì¹´ë¥´íЏ 좌표계)ë§�ê³ ë�„ 여러가지가 있다. ì�´ 좌표체계ì—� ë”°ë�¼ì„œ ì�´ë¯¸ì§€ 구성하는 ë°©ì‹�ë�„ 완전히 달ë�¼ì§ˆ 수 있어서 ì�´ë¥¼ 잘 고려해서 ì„ íƒ�해야한다. 하지만 지금 우리는 ì�¼ë‹¨ ì§�êµ�좌표계를 가지고 논해볼 것ì�´ë‹¤.

1.1.11. 뷰�트(viewport)와 �리핑(clipping)

  • í�´ë¦¬í•‘ì�´ëž€, 우리가 화면ì—� ì�´ë¯¸ì§€ë¥¼ 그리기 위해서는 openGLì—�게 화면ì�˜ 좌표 기준ì�„ 알려줄 필요가 있는ë�°, openGLì—�게 화면 좌표계 ì˜�ì—­ì�„ 정해주는 것ì�„ í�´ë¦¬í•‘ì�´ë�¼ê³  한다.

:
example) �사�형 좌측하단 (0.0) ~ �사�형 우측 �단(100,100) 좌표로 구성�는 �사�형모양� 좌표계를 �리핑한다�고 보면 � 좌표계 �역� 중심� (50,50)� �리핑
ì˜�ì—­ì�´ë�¼ê³  한다. 만약 좌표중심ì�„ (0,0)으로 만들고 싶다면 xì•ê³¼ yì•ì�˜ +ì˜�역좌표와 -ì˜�역좌표를 대칭형으로 만들어야한다. 
  • ë·°í�¬íŠ¸ëž€, 화면ì�˜ 좌측 하단ì�´ 0,0으로 기준ì�„ ë‘�ê³  우리가 눈으로 보는 윈ë�„ìš° ì°½ì—�서 ìž„ì�˜ì�˜ í�¬ê¸°ë¥¼ 할당해서 ì�´ë¯¸ì§€ 작업ì�„ í•  수 있는 화면ì—�서ì�˜ 실질ì �ì�¸ ì�´ë¯¸ì§€ 작업 ì˜�역를 ì�´ì•¼ê¸°í•œë‹¤. í�´ë¦¬í•‘ê³¼ 연관지어 ì�´ì•¼ê¸°í•˜ë©´, í�´ë¦¬í•‘ì�„ 화면ì—� ì �용시키는 ì˜�역으로 ë§�í•  수 있겟다. ì�´ ë·°í�¬íŠ¸ëŠ” 보통 ì°½ 전체를 설정해ë‘�ê³  작업하지만, 특수한 경우 화면ì�˜ 구성ì�„ 서로 다른 ì�´ë¯¸ì§€ë¡œ 구성해야한다면, ë·°í�¬íŠ¸ë¥¼ 나누어서 작업할 수 있다.

1.1.12. �� 투�과 �근 투�

  • 고등학êµ� 기하와 백터단ì›�ì�„ 배울 때 projection(투ì˜�)ì�„ ë°°ì› ì�„ 것ì�´ë‹¤. ì�´ë•Œ ë°°ìš´ 투ì˜�ì�´ëž€, ì§�êµ� 투ì˜�으로 2ì°¨ì›�으로 구성ë�œ ë©´ì—� 수ì§�한 ì•ì�„ 기준으로 ë�„형ì�„ 구성하는 ì �들ì�„ 면으로 수ì§�하게 내리는 것ì�„ ë§�한다. ì§�êµ�투ì˜�ì�˜ 특징ì�€ 물체가 멀리있는가 없는가ì—� ìƒ�관없ì�´ ê°™ì�€ í�¬ê¸° 비율로 표현ì�´ ë�œë‹¤ëŠ” ì �ì�´ë‹¤.
  • ì›�ê·¼ 투ì˜�ì�€ 가까ì�´ 있는가 멀리있는가ì—� 대한 표현ì�„ 가능케하는 비율ì�„ ì �용한 투ì˜�으로 한ì �ì—�서 í�¼ì§€ëŠ” ë¹›ì�„ ìƒ�ê°�하면 쉽게 알 수 있다.



�근투� 그림 예시
farprojection.png
[PNG image (14.54 KB)]


1.2. Chapter 2. openGL� 사용


  • 들어가기전ì—� openGLì�€ 프로그래ë°� 언어가 아닌 그래픽 하드웨어 제어를 위한 소프트웨어 ì�¸í„°íŽ˜ì�´ìФì�´ë‹¤. 그리고 높ì�€ ì�´ì‹�성ì�„ 지닌 그래픽&모ë�¸ë§� ë�¼ì�´ë¸ŒëŸ¬ë¦¬ì�´ë‹¤. 다시ë§�í•´, OpenGLì�€ 언어가 아닌 APIì�´ë‹¤.

1.2.1. OpenGL� 작�방�



  • openGLì�˜ 내부는 ìƒ�태들ì�˜ 변화를 통해서 ìž‘ë�™í•˜ëŠ” 기계ìƒ�태로 ë�™ìž‘한다.


  • openGLì—�는 창관리, ìƒ�호 작용 ì�¸í„°íŽ˜ì�´ìФì—� 대한 ì–´ë–¤ 함수ë�„ 없다. ì�´ëŠ” ì�¼ë°˜ì �ì�¸ 임플리먼테ì�´ì…˜(지정ë�œ 규약ì�„ 구현한 구현체)ì—� ì �용하기 위해서ì�´ë‹¤. Macì�´ë‚˜ 리눅스 윈ë�„ìš° ê°�ê°� 환경ì—� 대해서 모ë‘� ì ‘ê·¼ì�´ 가능케 하기위함ì�´ë�¼ê³  간단히 ë§�í•  수 있다.


  • ì�¼ë°˜ ì �ì�¸ 임플리먼테ì�´ì…˜ì�´ë�¼ëŠ” 용어를 약간 ìž�세히 설명하ìž�ë©´ ì�´ ë§�ì�€ 그래픽 ì�´ë¯¸ì§€ë¥¼ ìœë ¥í•  수 있는 시스템ì�´ë�¼ë©´ 어디든지 ì�´ openGLì�„ ì �용할 수 있어야한다는 걸 함ì•하는 용어ë�¼ê³  í•  수 있다.

� �세한 용어 설명 : 어떤 목�� 맞추어 프로그램� 작성하는 것(목�� 만족시키는 것)� ‘임플리먼트한다’고 한다. - from <네�버 지�백과>


참고로 �반�� 임플리먼테�션� 소프트웨어 임플리먼테�션�다.



  • 그렇다면 ì�´ openGLì�€ 구체ì �으로 ì–´ë–¤ì‹�으로 작용하는가? 윈ë�„우를 예시로 들어보ìž�. 윈ë�„ìš° ê°™ì�€ 경우 ì–´ë–¤ 화면ì—� ì�´ë¯¸ì§€ë¥¼ ìœë ¥í•˜ë ¤ë©´ GDI(graphic Device Interface)ë�¼ëŠ” 그래픽 장치 ì�¸í„°íŽ˜ì�´ìŠ¤ë¥¼ 통해서 ìœë ¥ìž¥ì¹˜ë¡œ ìœë ¥ë�°ì�´í„°ë¥¼ ë³´ë‚´ ìœë ¥í•œë‹¤.



  • openGLì�€ 어플리케ì�´ì…˜ìœ¼ë¡œë¶€í„° 구성하려는 ì�´ë¯¸ì§€ì—� 대한 정보를 받아 ì�´ë¯¸ì§€ë¥¼ 구성후 ì�´ GDIì—�게 구성한 ì�´ë¯¸ì§€ë¥¼ ë³´ë‚´ ìœë ¥ìž¥ì¹˜ê°€ ì�´ë¥¼ ìœë ¥í•˜ê²Œë�”한다. 다른 ìš´ì˜�ì²´ì œë�„ 마찬가지로 윈ë�„ìš°ì—�서 GDIì—� 해당하는 부분만 다를ë¿� 과정ì�€ 같다.


1.2.2. openGL� 하드웨어 임플리먼테�션



  • openGLì�€ 하드웨ì �으로 처리ë�˜ëŠ” 부분ë�„ 있고 소프트웨어ì �으로 처리ë�˜ëŠ” 부분ì�´ìžˆë‹¤. 여기ì—�서 ë§�하고ìž� 하는것ì�€ 하드웨어ì �ì�¸ 것ì�´ë‹¤.



  • openGLì�˜ 하드웨어 임플리먼테ì�´ì…˜ì�€ 그래픽 개발사ì—�서 그래픽 카드 드ë�¼ì�´ë²„ 형태로 개발ë�˜ê³  사용ë�œë‹¤. openGLì�´ 특정 플랫í�¼ì—�서 시작하여 ì�¼ë°˜ì �ì�¸ 플랫í�¼ìœ¼ë¡œ 전향하고 개방화를 실시했ì�„때 ê°� 그래픽 드ë�¼ì�´ë²„ì—� 대한 openGLì�˜ 개발ì�€ 하드웨어 제작사ì—�서 ì�´ë£¨ì–´ì ¸ì•¼ 한다고 ìƒ�ê°�하고 그리 시행했는ë�°, ì�´ëŠ” 매우 ì �합한 ì„ íƒ�ì�´ ë�˜ì—ˆê³  ì�´ë¡œ ì�¸í•´ 하드웨어 임플리먼테ì�´ì…˜ì�€ 그래픽 개발사ì—�서 맡게ë�˜ì—ˆë‹¤.



  • 하드웨어ì �ì�¸ ë‚´ìš©ì�„ 설명하려면 ìš°ì„  openGLì�˜íŒŒì�´í”„ë�¼ì�¸ì—� 대해서 설명해야한다. 고로 ê·¸ 파ì�´í”„ë�¼ì�¸ì—� 대해서 살펴보ìž�.

1.2.3. 파�프��


  • ì�´ëŠ” 그림부터 보여주고 설명하겟다.

pipeLine2.png
[PNG image (16.11 KB)]


  • 1. ìš°ì„  명령 버í�¼ì—� openGL명령ì�´ 쌓ì�¸ë‹¤.(vertexë�°ì�´í„°ì™€ í…�스ì³� ë�°ì�´í„°ê°€ 쌓ì�¸ë‹¤.)



  • 2. ê·¸ 다ì�Œ, vertexë�°ì�´í„°ì™€ í…�스ì³� ë�°ì�´í„°ì—� 대해서 조명, 변환과정ì�´ ì�¼ì–´ë‚œë‹¤. ìž�세히 설명하ìž�ë©´, 물체를 구성하는 ì �들ì—� 대해서 좌표변환, 방향변환ì�„ 수행하고 í…�스ì³�(ì�´ë¯¸ì§€)ì—� 대해서 조명ì�´ë‚˜ 색ìƒ�ì�„ 변화시키는 과정ì�´ë�¼ê³  í•  수 있다.



  • 3. ê·¸ 후 변환ë�°ì�´í„°ë¥¼ 레스터ë�¼ì�´ì¦ˆ(화면ì—� 나타날 í™”ìƒ�ì�„ 구성하는 단계)부분으로 보낸후, 외관과 색ìƒ� í…�스ì³�, 지오메트리를 명령대로 구성하여 프레임 버í�¼ë¡œ 보낸다.



  • 4. 프레임 버í�¼ëŠ” 그래픽 ìœë ¥ìž¥ì¹˜ì�˜ 메모리를 ì�´ì•¼ê¸°í•˜ë©°, 여기ì—� 올ë�¼ê°„다는 ì�´ì•¼ê¸°ëŠ” 화면ì—� 보여진다는 ì�´ì•¼ê¸°ì™€ 같다.

  • 1.2.4. ë�°ì�´í„° 타입


    • openGLì�€ ë�°ì�´í„°íƒ€ìž…ì�„ ë‚´ë¶€ì �으로 ì •ì�˜ 하고 ë‚´ë¶€ì—�서 ì“°ê³  있다. ì�´ëŠ” 역시 ì�¼ë°˜ì �ì�¸ 임플리먼테ì�´ì…˜ì�„ 고수하기 위해서임ì�€ 당연한 사실ì�´ë‹¤.(ê°� 환경마다 ë�°ì�´í„° 형ì‹�ì�´ 다르기 때문ì—� ì�´ë¥¼ 모ë‘�수용하기 위해서는 ìž�ì²´ì �으로 ì •ì�˜í•œ ë�°ì�´í„°í˜•ì‹�ì�„ 쓸 수 ë°–ì—� 없다.)


  • 그리고 ì�´ ë�°ì�´í„°íƒ€ìž…ì�€ openGLì—� naming convention(ì�´ë¦„ 규칙)ì—� ë”°ë�¼ 정해져있는ë�° ì§�ê´€ì �ì�´ë�¼ ì�€ê·¼ížˆ 외우기 쉽다. 아래ì�˜ 표를 살펴보ìž�.


  • <openGLë�°ì�´í„° 타입> <설명> <대ì�‘ c언어 ë�°ì�´í„° 타입> <변수 ì ‘ë‘�ì–´ 규칙>
    GLbyte 8비트 정수 signed char b
    GLshort 16비트 정수 short s
    GLint, GLsizei 32비트 정수 long l
    GLfloat, GLclampf 32비트 실수 float f
    GLdouble, GLclampd 64비트 실수 double d
    GLubyte, GLboolean 부호없는 8비트 정수 unsigned char ub
    GLushort 부호없는 16비트 정수 unsigned short us
    GLuint, GLenum, GLbitfield 부호없는 32비트 정수 unsigned long ui


    • openGLì�„ ìƒ�징하는 GLì�„ 앞ì—� 붙히는건 ì�´ë¿�만아니ë�¼ 함수ì—�ë�„ ì �ìš©ë�œë‹¤ëŠ” 사실ì�„ 하나 알아ë‘�ìž�.

  • size ë�¼ëŠ” 단어가 들어간 타입ì�€ 길ì�´ë‚˜ 깊ì�´ì™€ ê°™ì�€ ê°’ì�„ 담는ë�° ì“°ì�´ëŠ” 타입ì�´ë�¼ëŠ” 것ì�„ 나타낸다.

  • clampë�¼ëŠ” 단어가 ë¶™ì�€ 타입ì�€ í�¬ê¸°ê°€ 0.0ì—�서 1.0사ì�´ë¡œ 범위가 제한ë�˜ëŠ” 타입ì�´ë�¼ëŠ” ì�˜ë¯¸ë¥¼ 가진다.

  • enumì�€ 열거형 booleanì�€ 트루 í�´ìФ.

  • bitfield는 눈치 채셧듯ì�´ ë°”ì�´ë„ˆë¦¬ 비트필드 ê°’ì—� 대한 타입ì�´ë‹¤. 앞서 ë§�한 openGLì�˜ 내부는 ìƒ�태ì—� 대한 기계ìƒ�태ì�˜ 변화로 ì�´ë£¨ì–´ 진다고 했는ë�° ì�´ê²Œ 나중ì—� ìƒ�태ì—� 대한 묶ì�Œì�„ 표현하고 ìƒ�태묶ì�Œì�„ 그때그때 편리하게 변화할때 ì“°ì�¸ë‹¤.

  • 1.2.5. 함수 ì�´ë¦„ 규칙


    • 규칙 : <ë�¼ì�´ë¸ŒëŸ¬ë¦¬ ì�´ë¦„><루트 명령어><(ì„ íƒ�ì �) ì�¸ìž�ì�˜ 수><(ì„ íƒ�ì �)ì�¸ìž� 타입>

  • 위와 ê°™ì�€ ë°©ì‹�으로 함수 ì�´ë¦„ì�´ 정해져있는ë�° 예를 들어보ìž�ë©´ 다ì�Œê³¼ 같다.

  • glColor3f(GLfloat a, GLfloat b, GLfloat c); ---->ì�´ì™€ ê°™ì�€ 함수를 ë¶„ì„�í•´ë³´ë©´, glì�´ë�¼ëŠ” ë�¼ì�´ë¸ŒëŸ¬ë¦¬ì—� Colorë�¼ëŠ” 명령ì�„ 담당하는 floatì�¸ìž�ê°€ 3개있는 함수ì�´ë‹¤.ë�¼ê³  í•´ì„�í•  수 있다.

  • 위ì�˜ 규칙ì—�서 (ì„ íƒ�ì �)ì�´ë�¼ê³  ë�˜ì–´ìžˆëŠ” 것ì�€ ì—†ì�„수ë�„ 있고 있ì�„수ë�„ 잇다는 ì�´ì•¼ê¸°ì�´ë‹¤. 위를 예를 ì�´ìš©í•´ì„œ 설명하ìž�ë©´, glColor()ê°€ 있 ì�„ 수 있다는 ì�´ì•¼ê¸°ì�´ë‹¤.

  • 참고사항 : openGlì�˜ ë‚´ë¶€ì �ì�¸ ë�°ì�´í„°íƒ€ìž…ì�€ floatì�„ 사용하고 있기 때문ì—� 왠만해서는 ì�´ ë�°ì�´í„° 타입ì—� 맞게 ë�°ì�´í„°ë¥¼ 전달해주는게 정확ë�„ 측면ì�´ë‚˜ ì „ì²´ì �ì�¸ 성능 í–¥ìƒ�ì�˜ 측면ì—�서 ë�” 좋다.
  • Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:23:55
    Processing time 0.0184 sec