-
Notifications
You must be signed in to change notification settings - Fork 13
[Note] Program 2.2
Juhwi Eden Kim edited this page Oct 13, 2019
·
4 revisions
-
glDrawArrays(GLenum mode, Glint first, GLsize count);: ์ด ํจ์๊ฐ ํธ์ถ๋ ๋, pipeline์ ์๋ GLSL ์ฝ๋๊ฐ ์คํ
-
GLuint๋ unsigned int
- init() ํจ์๋ createShaderProgram()๋ฅผ ํธ์ถ
- createShaderProgram()์ vShaderSource์ fShaderSource๋ก ์์ด๋ ์ฝ๋๋ฅผ ์คํธ๋ง ํํ๋ก ๋ฐ์
- glCreateShader()์ GL_VERTEX_SHADER์ GL_FRAGMENT_SHADER ํ์ ์์ด๋ ๋๊ฐ๋ฅผ ์์ฑ, OpenGL์ด ๋๊ฐ์ ๋น ์์ด๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๋๋ฉด ์ ์ํ ID ๋ฐํ, ์ด๊ฒ์ vShader์ fShader์ ์ ์ฅ
- glShaderSource()๋ vShaderSource์ fShaderSource์ ์ ์ฅ๋ ์์ด๋ ์คํธ๋ง์ ๋น ์์ด๋ ๊ฐ์ฒด์ ๋ก๋ (์์ด๋๋ฅผ ๋ก๋ํ ์์ด๋ ๊ฐ์ฒด, ์์ด๋ ์์ค์ฝ๋์ ์คํธ๋ง ๊ฐ์(๊ฐ ์์ด๋์ ์คํธ๋ง ๊ฐ์๊ฐ 1), ์์ค์ฝ๋ ์คํธ๋ง ํฌ์ธํฐ ๋ฐฐ์ด๊ณผ ์ฌ๊ธฐ์ nullptr๋ฅผ parameter๋ก ๋ฐ์)
- glCompileShader()๋ ์์ด๋๋ฅผ ์ปดํ์ผ
- vfProgram์ด๋ผ๋ ํ๋ก๊ทธ๋จ ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ ์ํ ID ์ ์ฅ : ์ด ๊ฐ์ฒด๋ ์ปดํ์ผ๋ ์์ด๋๋ฅผ ์ ์ฅ
- glCreateProgram() : ํ๋ก๊ทธ๋จ ๊ฐ์ฒด ์์ฑ
- glAttachShader() : ์์ด๋๋ฅผ ํ๋ก๊ทธ๋จ ๊ฐ์ฒด์ ์ฐ๊ฒฐ
- glLinkProgram() : GLSL ์ปดํ์ผ๋ฌ์๊ฒ compatible ์ฌ๋ถ ํ์ธ -> ์กฐ๊ฑด๋ฌธ์์ ํ์ธ
- glUseProgram() : ์ปดํ์ผ๋ ์์ด๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ๋ก๊ทธ๋จ ๊ฐ์ฒด๋ฅผ ํ์ดํ๋ผ์ธ ์คํ ์ด์ง๋ก ๋ก๋ (GPU๋ก ์ ๋ฌ), ์์ด๋๋ฅผ ์คํํ๋ ๊ฒ์ ์๋๊ณ ์ ๋ฌ๋ง ํจ
- glDrawArray() : ์ด ์์ ์์ ์ ํ๋๋ฅผ ์ฐ์
- vertex shader : vertex ์์ด๋๋ ์ ์ (vertex)๋ฅผ ํ์ดํ๋ผ์ธ์ ๋ด๋ ค๋ณด๋ด๋ ์ญํ ์ ํจ
- gl_Position : 3D ๊ณต๊ฐ์ ์ ์ ์ ์ขํ ์์น๋ฅผ ์ค์ ํ๋๋ฐ ์ฐ์ด๋ built-in ๋ณ์, ํ์ดํ๋ผ์ธ์ ๋ค์ ๋จ๊ณ๋ก ๋ณด๋ด์ง, XYZ ์ขํ์ 1.0 vec4 ๊ฐ์ ๋ฐ์
- fragment shader : ํ์ดํ๋ผ์ธ์ ๊ฑฐ์ณ rasterize์ ๋์ฐฉํ ์ ์ ๋ค์ ํฝ์ (์ ํํ๋ fragment) location์ผ๋ก ๋ณํ์์ผ์ค, display๋ ํฝ์ ์ RGB ๊ณ์ฐ
- out : color ๋ณ์๋ฅผ ์์ํ์์ ๋ํ๋ด๋ ํ๊ทธ, gl_Position์ ์ ์ด์ ์์ํ ๋ณ์์ฌ์ out ํ๊ทธ๊ฐ ํ์ ์์
- ๋ฐ์ดํฐ ์ธํธ๋ค์ ํ์ดํ๋ผ์ธ์ผ๋ก ๋ด๋ ค๋ณด๋ด์ง๋ ค๋ฉด buffer ๋จ์๋ก ๊ตฌ์ฑ๋์ด์ผ ํจ. ์ด ๋ฒํผ๋ค์ ๋ค์ Vertex Array Objects (VAO)๋ก ๊ตฌ์ฑ๋จ. ๋ฒํผ๋ฅผ ์ฐ์ง ์์๋ ์ต์ 1๊ฐ์ VAO ํ์
- vertex processing -> rasterization -> fragment processing
- rasterization: primitive(triangle, ์ฌ๊ธฐ์ point)๊ฐ ํฝ์ ๋ก ๋ณํ