OpenGL:: varying, in, out, uniform qualifier :: OPEN GL ES[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

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.01.01.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)을 가지게 된다.




inout은 인풋의 역할을 하는 오른쪽 변수에게 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
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.