문제
다음과 같은 간단한 조각 셰이더 코드가 실패하여 로그에 정보가없는 메시지를 남깁니다.ERROR: 0:1: 'gl_Color' : syntax error syntax error
void main()
{
vec4 myOutputColor(gl_Color);
gl_FragColor = myOutputColor;
}
다음이 작동하는 동안 :
void main()
{
glFragColor = gl_Color;
}
이것은 내 마음을 멍청하게합니다 Lighthouse3d의 튜토리얼 GL_COLOR는 VEC4라고합니다. 다른 VEC4에 할당 할 수없는 이유는 무엇입니까?
해결책
정상 할당을 시도하십시오. 이와 같이:
void main()
{
vec4 myOutputColor = gl_Color;
gl_FragColor = myOutputColor;
}
편집하다:
두 번째 대답은 실제로 정확하지만 VEC4 () 생성자를 사용할 필요는 없습니다. 둘 다 같은 유형이기 때문입니다. A (r, g, b, w) 튜플이라고 말할 수 있다면 다음을 쓸 수 있습니다.
vec4 myOutputColor = vec4(r, g, b, w);
또는
// assuming myRgbColor is a vec3
vec4 myOutputColor = vec4(myRgbColor, w);
등
다른 팁
aparrally 약간 다른 구문을 사용해야합니다
(보다 OpenGL 음영 언어 사양 )
vec4 myOutputColor = vec4(gl_Color);
gl_FragColor = myOutputColor;
이것은 당신의 샘플과 달리 내 마시신에서 잘 컴파일합니다 (Windows, nvidia card)
제휴하지 않습니다 StackOverflow