문제

다음과 같은 간단한 조각 셰이더 코드가 실패하여 로그에 정보가없는 메시지를 남깁니다.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)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top