안녕하세요.
세번째 포스팅입니다 ^^
오늘은 지난번에 말씀드린대로 GLSL에 대해서 알아보겠습니다!
3.1 GLSL이란
GLSL이란 무엇일까요?
GLSL은 openGL Shading Language의 약자로 opengl에서 사용하는 쉐이딩 언어입니다.
즉, OpenGL의 쉐이더를 컨트롤할 수 있는 간략하고 효율적인 언어입니다.
언어라고 하니 어려우실 것 같나요? glsl은 c언어와 매우 비슷해서 어렵지 않아요.
c언어와 같이 다양한 기능을 제공 합니다.
c언어와의 차이점은 포인터, 재귀, 동적할당을 제공하지 않는다는 점입니다.
그 외 연산(벡터, 행렬 등), 구조체, 함수, i/o 등등 다 같습니다 ㅎㅎ
예제를 볼까요
#version 430 uniform mat4 u_ModelView; in vec3 Position; in vec3 Color; out vec3 fs_Color; void main(void) { fs_Color = Color; gl_Position = u_ModelView * vec4(Position, 1.0); } |
간단하죠?
version은 4.3 버전의 openGL을 사용함을 뜻합니다.
in은 전달 받은 정보이며, out은 현재 쉐이더에서 다음 쉐이더로 넘어갈 정보를 뜻해요.
(vertex shader -> fragment shader로 넘어가는 정보라고 생각하시면 되요~)
main에서 우리가 계산해야 할 변수가 바로 gl_Position입니다.
4*4 matrix 계산을 통해 구하면 되는 것이죠. 행렬 계산은 모두 알고 계시죠 ? ^^
3.2 GLSL 처리 과정
위 모습이 바로 GLSL의 처리 과정입니다!
프로그램 생성 -> 쉐이더 생성 -> 쉐이더 소스 작성 -> 쉐이더 컴파일
-> 쉐이더와 프로그램 연결 -> 프로그램 링크 -> 프로그램 사용
참 직관적인 순서이죠 ? 프로그램은 vertex와 fragment 쉐이더를 꼭 포함해야 합니다.
그 외 쉐이더는 선택사항입니다. 여기서는 처리 과정을 한번 보세요.
그리고 꼭 쉐이더와 프로그램이 연결되어야 한다는 것을 인지하고 계시면 됩니다.
오늘은 GLSL에 대해서 정리했습니다.
이제 기본적인 opengl shader 프로그래밍을 할 수 있습니다.
다음 포스팅에서는 지금까지 배운것을 바탕으로 기본적인 프로그램을 만들어 보겠습니다.
큐브에 컬러를 입히고, 여러가지 callback함수를 통해 이 큐브를 제어하는 프로그램을요!
그럼 오늘의 포스팅은 이만 마치겠습니다. 감사합니다.
'OpenGL' 카테고리의 다른 글
[OpenGL-6] Model View Matrix (2) | 2016.11.13 |
---|---|
[OpenGL-5] Cube Control Program (1) | 2016.11.02 |
[OpenGL-4] Callback and Transformation (0) | 2016.10.30 |
[OpenGL-2] OpenGL 시작하기 (3) | 2016.10.20 |
[OpenGL-1] OpenGL이란 (2) | 2016.10.13 |