답변:
저장 예선 in
과 out
실제로는 포함하고 대체의 목적이 varying
와 attribute
. 그들은 변수가 각각 무엇인지 정의 에 두고 밖으로 쉐이더에 넣습니다. 7 페이지 의 GLSL 4.2 참조 카드를 참조하십시오.
in
: 이전 단계에서 셰이더에 연결out
: 셰이더에서 다음 단계로 연결attribute
: in
버텍스 쉐이더 와 동일varying
: out
버텍스 쉐이더와 동일, in
프래그먼트 쉐이더 와 동일 (참고 : 위에서 언급 한 참조 카드에서 잘못 뒤집어 짐)부수적으로 후자 두 개는 더 이상 사용되지 않습니다. 4.2 코어 프로파일에는 없으며 호환성 프로파일에만 있습니다.
사용법은 정점 셰이더를 소개에서 최신 OpenGL로 가져갑니다. 2.2 장 쉐이더 :
#version 110
attribute vec2 position;
varying vec2 texcoord;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
texcoord = position * vec2(0.5) + vec2(0.5);
}
4.2 코어에서 다음과 같이 다시 작성해야합니다.
#version 420
in vec2 position;
out vec2 texcoord;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
texcoord = position * vec2(0.5) + vec2(0.5);
}
"오래된"튜토리얼 코드를 찾은 주된 이유는 모든 사람이 GLSL 3.3+ 호환 하드웨어에 액세스 할 수 없기 때문입니다. 어쨌든, 최신 튜토리얼을 위해 Nicol Bolas의 Learning Modern 3D Graphics Programming 의 방향을 기꺼이 알려 드리겠습니다 .