OpenGL

[OpenGL-3] GLSL이란

zamezzz 2016. 10. 24. 22:32

안녕하세요.


세번째 포스팅입니다 ^^


오늘은 지난번에 말씀드린대로 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