|
OPEN GL ES |
[1] |
|
등록일:2020-06-07 21:11:30 (0%) 작성자: 제목:OpenGL:: varying, in, out, uniform qualifier |
|
여러 가지 종류의 한정자가 있는데 각각의 차이를 잘 모르겠어서
알아보는 시간을 가지고자...
Vertex shader, Fragment shader와 코드가 있을 때,
varying을 사용하면 Vertex shader와 Fragment shader에서 그 값이 공유된다.
Vertex shader에서 Fragment shader로 데이터를 넘길 때 사용한다.
Ex.
//Vertex shader
#version 130
varying vec3 v_color;
void main(){
v_color = (1.0, 1.0, 1.0);
}
//Fragment shader
#version 130
varying vec3 v_color;
void main(){
gl_FragColor = vec4(v_color, 1.0);
}
+) gl_FragColor는 vec4(1.0, 1.0, 1.0, 1.0)을 가지게 된다.
in과 out은 인풋의 역할을 하는 오른쪽 변수에게 in,
아웃풋의 역할을 하는 왼쪽 변수에게 out을 선언한다고 생각하면 될 거 같다.
역할은 varying과 같다.
Vertex shader에서 사용한 out을 Fragment shader에서 in으로 접근할 수 있다.
Ex.
//Vertex shader
#version 130
in vec4 a_position;
in vec3 a_color;
out vec3 v_color; //pass!
void main() {
v_color = a_color;
gl_Position = a_position;
}
//Fragment shader
#version 130
in vec3 v_color; //access!
void main() {
gl_FragColor = vec4(v_color, 1.0);
}
+) gl_Position이나 gl_FragColor 등의 global 변수는 out을 사용하면 중복 선언이다.
uniform 한정자도 varying과 같이 vertex shader와 fragment shader 사이의 정보를 공유하게 해준다. 하지만 항상 같아야하는(uniform) read-only 변수로, shader 내에서 정의되거나 값이 변할 수 없다. uniform으로 전달되는 예로는 매질, 광원, 시간 변수 등이 있다. |
[본문링크] OpenGL:: varying, in, out, uniform qualifier
|
[1]
|
|
|
|
|
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34943 |
|
|
|
|
|
|
|
|
|
Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.
|
|
|