0 Introduction - JJhuk/LearnOpenGL GitHub Wiki

LearnOpenGL - Introduction

생성일: 2020λ…„ 12μ›” 19일 μ˜€ν›„ 8:58

https://learnopengl.com/Introduction

μ—¬κΈ°κΉŒμ§€ μ™”κΈ° λ•Œλ¬Έμ— 컴퓨터 κ·Έλž˜ν”½μŠ€μ˜ λ‚΄λΆ€ μž‘λ™ 방식을 배우고 멋진 μ‚¬λžŒλ“€μ΄ ν˜Όμžν•˜λŠ” λͺ¨λ“  일듀을 ν•˜κ³  싢을 κ²ƒμž…λ‹ˆλ‹€. ν˜Όμžμ„œ μž‘μ—…ν•˜λŠ” 것은 맀우 재미있고 κ·Έλž˜ν”½ ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•œ ν›Œλ₯­ν•œ 이해λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ„ˆμ˜ 여정을 μ‹œμž‘ν•˜κΈ°μ „μ— κ³ λ €ν•΄μ•Ό ν•  λͺ‡κ°€μ§€ 것듀이 μžˆμŠ΅λ‹ˆλ‹€.

μ „μ œ 쑰건

OpenGL은 κ·Έλž˜ν”½ API이며 자체 ν”Œλ ›νΌμ΄ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μž‘λ™ν•  μ–Έμ–΄κ°€ ν•„μš”ν•˜λ©° κ·Έ μ–Έμ–΄λŠ” C++ μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ μ–΄μ§€κ°„ν•œ C++ ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•œ 지식이 μš”κ΅¬λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν•„μš”ν•œ 경우 κ³ κΈ‰ C++ 주제λ₯Ό ν¬ν•¨ν•˜μ—¬ μ‚¬μš©λ˜λŠ” λŒ€λΆ€λΆ„μ˜ κ°œλ…μ„ μ„€λͺ…ν•˜λ €κ³ ν•˜λ―€λ‘œ C++ μ „λ¬Έκ°€κ°€ μ•„λ‹ˆμ–΄λ„ λ˜μ§€λ§Œ λ‹¨μˆœνžˆ 'Hello World' ν”„λ‘œκ·Έλž¨ 이상을 μž‘μ„±ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

λ˜ν•œ, λͺ‡κ°€μ§€ μˆ˜ν•™μ„ μ‚¬μš©ν• κ»λ‹ˆλ‹€ (μ„ ν˜•λŒ€μˆ˜ν•™, κΈ°ν•˜ν•™, 삼각법) 을 μ‚¬μš©ν•  것이며 ν•„μš”ν•œ μˆ˜ν•™μ˜ λͺ¨λ“  ν•„μˆ˜ κ°œλ…μ„ μ„€λͺ…ν•˜λ €κ³  λ…Έλ ₯ν• κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ €λŠ” μˆ˜ν•™μžκ°€ μ•„λ‹ˆκΈ°λ•Œλ¬Έμ— 제 μ„€λͺ…이 μ΄ν•΄ν•˜κΈ° μ‰¬μšΈμ§€λŠ” λͺ°λΌλ„ λΆˆμ™„μ „ν•  κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ ν•„μš”ν•œ 경우 자료λ₯Ό 보닀 μ™„μ „ν•œ λ°©μ‹μœΌλ‘œ μ„€λͺ…ν•˜λŠ” 쒋은 λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 포인터λ₯Ό 제곡 ν•  κ²ƒμž…λ‹ˆλ‹€. OpenGL둜의 여정을 μ‹œμž‘ν•˜κΈ° 전에 ν•„μš”ν•œ μˆ˜ν•™μ  지식에 λŒ€ν•΄ λ‘λ €μ›Œ ν•˜μ§€ λ§ˆμ„Έμš”. 거의 λͺ¨λ“  κ°œλ…μ€ 기본적인 μˆ˜ν•™μ  배경으둜 이해할 수 있으며 κ°€λŠ₯ν•œ ν•œ μ΅œμ†Œν•œμ˜ μˆ˜ν•™μ„ μœ μ§€ν•˜λ €κ³  λ…Έλ ₯ ν•  κ²ƒμž…λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ κΈ°λŠ₯은 μ‚¬μš© 방법을 μ•„λŠ” ν•œ λͺ¨λ“  μˆ˜ν•™μ„ 이해 ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

ꡬ쑰

LearnOpenGL μ—¬λŸ¬ 일반 μ„Ήμ…˜μœΌλ‘œ λ‚˜λ‰©λ‹ˆλ‹€. 각 μ„Ήμ…˜μ—λŠ” 각기 λ‹€λ₯Έ κ°œλ…μ„ μžμ„Ένžˆ μ„€λͺ…ν•˜λŠ” μ—¬λŸ¬ μž₯이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 각 μ±•ν„°λŠ” μ™Όμͺ½ λ©”λ‰΄μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. κ°œλ…μ€ μ„ ν˜• λ°©μ‹μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€. (달리 μ§€μ‹œλ˜μ§€ μ•ŠλŠ” ν•œ μœ„μ—μ„œ μ•„λž˜λ‘œ μ‹œμž‘ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.) μ—¬κΈ°μ„œ 각 μž₯μ—λŠ” λ°°κ²½ 이둠과 μ‹€μ œ 츑면을 μ„€λͺ…ν•©λ‹ˆλ‹€.

κ°œλ…μ„ 더 μ‰½κ²Œ λ”°λ₯΄κ³  μΆ”κ°€ ꡬ쑰λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ 이 μ±…μ—λŠ” boxes, code blocks, color hints and function referencesκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

Boxes

μ΄ˆλ‘μƒ‰ λ°•μŠ€λŠ” λͺ‡κ°€μ§€ λ©”λͺ¨λ‚˜ OpenGLμ΄λ‚˜ λ‹€λ£¨κ³ μžˆλŠ” μ£Όμ œμ— λŒ€ν•΄ μœ μš©ν•œ νŠΉμ§•μ΄λ‚˜ 힌트λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

빨간색 λ°•μŠ€λŠ” 맀우 μ‘°μ‹¬ν•΄μ•Όν•˜λŠ” νŠΉμ§•μ΄λ‚˜ κ²½κ³ λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

Code

μ•„λž˜μ—μ„œ λ³Ό 수 μžˆλ“―μ΄ ꡬ문 κ°•μ‘° μ½”λ“œκ°€ μžˆλŠ” 짙은 νšŒμƒ‰ μƒμžμ— μžˆλŠ” μ›Ή μ‚¬μ΄νŠΈμ—μ„œ μž‘μ€ μ½”λ“œλ₯Ό 많이 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

// 이 λ°•μŠ€μ—λŠ” μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

μ½”λ“œ μŠ€λ‹ˆνŽ«λ§Œ μ œκ³΅ν•˜λ―€λ‘œ ν•„μš”ν•œ 경우 주어진 μ£Όμ œμ— ν•„μš”ν•œ 전체 μ†ŒμŠ€ μ½”λ“œμ— λŒ€ν•œ 링크λ₯Ό 제곡 ν•  κ²ƒμž…λ‹ˆλ‹€.

Color hints

λͺ‡λͺ‡ 단어듀은 λ‹€λ₯Έ μƒ‰μƒμœΌλ‘œ ν‘œμ‹œλ˜μ–΄ μ΄λŸ¬ν•œ 단어가 νŠΉλ³„ν•œ 의미λ₯Ό 더 λͺ…ν™•ν•˜κ²Œ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

  • μ •μ˜: 녹색 λ‹¨μ–΄λŠ” μ •μ˜, 즉 더 μžμ£Όλ“€μ„ κ°€λŠ₯성이 μžˆλŠ” μ€‘μš”ν•œ μΈ‘λ©΄/ 이름을 μ§€μ •ν•©λ‹ˆλ‹€.
  • ν”„λ‘œκ·Έλž¨ ꡬ쑰: 빨간색 λ‹¨μ–΄λŠ” ν•¨μˆ˜ 이름 λ˜λŠ” 클래슀 이름을 μ§€μ •ν•©λ‹ˆλ‹€.
  • λ³€μˆ˜: νŒŒλž€μƒ‰ λ‹¨μ–΄λŠ” λͺ¨λ“  OpenGL μƒμˆ˜λ₯Ό ν¬ν•¨ν•˜λŠ” λ³€μˆ˜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.

OpenGL ν•¨μˆ˜ 레퍼런슀

LearnOpenGL에 특히 잘 μ•Œλ €μ§„ κΈ°λŠ₯은 μ½˜ν…μΈ μ— ν‘œμ‹œλ˜λŠ” λͺ¨λ“  OpenGL의 κΈ°λŠ₯을 κ²€ν†  ν•  수 이쓴ㄴ κΈ°λŠ₯μž…λ‹ˆλ‹€. μ›Ή μ‚¬μ΄νŠΈμ— λ¬Έμ„œν™”λœ μ½˜ν…μΈ μ—μ„œ κΈ°λŠ₯이 발견될 λ•Œλ§ˆλ‹€ κ·Έ κΈ°λŠ₯은 밑쀄과 ν•¨κ»˜ ν‘œμ‹œλ©λ‹ˆλ‹€. 마우슀λ₯Ό ν•¨μˆ˜ μœ„λ‘œ κ°€μ Έκ°€λ©΄ μž μ‹œ 후에 νŒμ—… 창에 ν•¨μˆ˜κ°€ μ‹€μ œλ‘œ μˆ˜ν–‰λ˜λŠ” μž‘μ—…μ— λŒ€ν•œ κ°œμš”λ₯Ό ν¬ν•¨ν•˜μ—¬ 이 ν•¨μˆ˜μ— λŒ€ν•œ κ΄€λ ¨ 정보가 ν‘œμ‹œλ©λ‹ˆλ‹€. glEnalbe μœ„λ‘œ 마우슀λ₯Ό κ°€μ Έ κ°€λ©΄ λ™μž‘μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

이제 μ‚¬μ΄νŠΈ ꡬ쑰에 λŒ€ν•΄ μ•½κ°„ μ•Œμ•˜μœΌλ‹ˆ μ‹œμž‘ν•˜κΈ° μ„Ήμ…˜μœΌλ‘œ μ΄λ™ν•˜μ—¬ OpenGL의 여정을 μ‹œμž‘ν•˜μ„Έμš”!