2015-01-15 2 views
1

섹션에서 프로젝트를 업그레이드하고 있습니다. 나는 아직 gl_ModelViewProjectionMatrix를 사용하고 있습니다.GLSL 더 이상 지원되지 않습니다

OpenGL 3.1 Compatablity 1.4 GLSL을 사용하고 있습니다. 컴퓨터에서 정상적으로 작동합니다.

C7533 : 나는 그것이 나에게 다음과 같은 오류주는 다른 컴퓨터로 이동하려고하면 전역 변수 gl_ModelViewProjectionMatrix이 버전 120

후 사용되지 않습니다 왜 하나의 컴퓨터가 사용되지 않는 기능과 다른하지 수 있도록 것인가? 이 다른 컴퓨터로 옮겨야하는 것이 있습니까? 경고처럼 들리지만 객체는 그려지지 않았거나 번역되지 않았습니다.

+0

더 이상 사용되지 않는 것은 "더 이상 작동하지 않음"을 의미하지 않으며 멀리에서 벗어나는 것을 고려해야합니다. 최근 구현에서는 더 이상 사용되지 않을 수도 있습니다. – dtech

+0

이 경고는 두 번째 컴퓨터에만 나타납니다. 또한 작동하지 않습니다 (오브젝트는 그려지지 않습니다). –

답변

1

GLSL 셰이더 버전과 컨텍스트 버전은 두 가지 별도의 항목입니다. gl_ModelViewProjectionMatrix인 경우 GLSL 1.20 (GL 2.1에서 도입) 이후에이 더 이상 사용되지 않는 것은 사실입니다. GL 3.0은 더 이상 지원되지 않으며 GL이 없기 때문에 전체 고정 함수 행렬 스택이 제거됩니다 (그리고 GL 3.1은 GL_ARB_compatibility 제외). GLSL 버전 1.50은 프로파일을 GLSL에 소개합니다. GLSL은 컨텍스트 버전과 독립적이지만 동일한 방식으로 작동합니다. 폐기 된 사항은 일반적으로 최신 코어 GLSL 버전에서 이 제거 된이됩니다.

이렇게 말하면서 나는 이것이 어떻게 잘 작동하는지 모른다. GL 3.1 핵심 컨텍스트가 실제로 있고 실제로있는 경우 gl_ModelViewProjectionMatrix과 관련된 행렬을 설정할 수있는 명령이 없습니다 (GLSL 컴파일러에서 허용하는지 여부). glLoadMatrix (...) 등은 GL 3.1에서 모두 제거되었습니다.

그러나 일반적으로 "핵심"이라고 생각할만한 내용이없는 것으로 의심됩니다. GL 3.1은보기 싫지만 OpenGL에 프로파일 소개를 시작합니다. 기술적으로는 은 GL 3.0에서 더 이상 사용되지 않는 거의 모든 것을으로 제거하지만 확장자가 GL_ARB_compatibility 인 경우 효과적으로 "호환성 프로파일"이라고 부릅니다.

+0

아, GLSL 컴파일러 버전이 더 합리적입니다. 나는 1.4를 사용하고있다. 호환성 문맥을 사용한다면 왜 한 컴퓨터가이 메시지를 줄 수 있습니까? –

+0

@JordanJHiebert : 다른 GPU 공급 업체입니까 (예 : 하나의 NVIDIA와 다른 쪽의 Intel 또는 AMD)? 셰이더 맨 위에 '#version ...'지시어가 없다고 가정하면 구현시 GLSL 1.10 스펙에 따라 셰이더가 작성되었다고 가정합니다.이 경우 경고 일뿐입니다. 실제 오류는 _ "컨텍스트에서 지원하지 않는 셰이더 버전"_과 같을 것입니다. –

+0

@JordanJHiebert : 편집 한 질문을 읽으십시오. GLSL 1.40에 관해서는 [여기] (https://www.opengl.org/registry/doc/GLSLangSpec.Full.1.40.08.pdf?#page=11) 1.6 절에서 포워드 호환 가능한 환경에서 비추천의 효과에 대해 이야기한다. –

0

좋아, 내 컴퓨터의 소스가 엔비디아 그래픽 카드를 가지고있는 것 같습니다. (나는 간단한 경고 였어야했다) 오류를 해결하기 위해 "#version 150 compatibility"와 OpenGL을 3.2로 변경했습니다.

이렇게하면 Nvidia GLSL 컴파일러가 징징 소리를 멈추고 그 직업. 준비가되면 ff 매트릭스 스택에서 업그레이드 할 것입니다.

+0

이렇게하면 렌더링 컨텍스트를 만들 때 OpenGL 3.2 호환 프로필도 요청해야합니다. OpenGL 3.1의 실질적인 문제는 컨텍스트를 생성 할 때 코어 대 호환성을 요청할 방법이 없다는 것입니다. 'GL_ARB_compatibility'확장을 받았는지 여부에 따라 상황을 직접 처리해야합니다. –

+0

나는 그것을 또한했다. 그것이 필요한지 아닌지 확실하지 않았습니다. 확인해 주셔서 감사합니다. –