나는 혼란스러워하는 사건에 걸려 넘어 질 때까지 OpenGL 명명 규칙과 확장이 어떻게 작동했는지에 대한 일반적인 이해를 형성했다고 생각했다.
지금까지 내 이해가 있습니다.
접미사 없음 – 예 glGenBuffers()
. 이 기능은 핵심 프로파일의 일부입니다. 위키 페이지는 이 버전 1.5부터 핵심 프로필에 추가되었다고 알려줍니다.
ARB- 예 glGenBuffersARB()
. 이 기능은 표준화 된 GL_ARB_vertex_buffer_object
확장 기능의 일부입니다 . 이 확장 의 사양 은 GenBuffersARB()
"새 프로 시저 및 함수"섹션에 명확하게 선언 되어 있습니다. 하드웨어가 확장을 지원하는 경우 "종속성"섹션에 1.4 이상 컨텍스트에서 액세스 할 수 있음이 나와 있습니다.
EXT - 이러한 벤더 고유의 확장과 일부 공급 업체는이 기능을 지원하지 않을 기능은 다음과 같습니다. 정점 버퍼 객체의 레지스트리에 EXT 확장자가없는 것 같습니다.
여기 내 이해가 무너지는 곳이 있습니다.
glGenFramebuffers
상기로 위키 쇼 3.0 코어에 첨가 하였다.
이제 3.0보다 낮은 코어 프로파일 버전에서 프레임 버퍼 기능에 액세스하려고합니다. 확장명으로 사용하고 싶습니다. 사양 레지스트리는 ARB 와 EXT의 두 가지 확장이 있음을 알려줍니다 .
질문 1 -ARB 확장이 존재하면 왜 EXT 확장이 존재합니까? 공급 업체별 표준보다 표준화 된 표준을 항상 선택하지 않습니까?
"새 프로 시저 및 함수"섹션에서 ARB 스펙을 보면 확장이 GenRenderbuffers()
함수를 정의 함을 알 수 있습니다. 이번에는 ARB 접미사가 없습니다. GLEW에는 함수 프로토 타입이 전혀 없습니다 glGenRenderbuffersARB()
. 기묘한.
그러나 EXT 사양에는 GenRenderbuffersEXT()
새로운 기능 섹션에 기능이 있으며 GLEW에도 기능이 glGenRenderbuffersEXT()
있습니다.
질문 2 -EXT 접미사가있는 경우 ARB 접미사가없는 이유는 무엇입니까? ARB 기능의 이름과 핵심 기능이 동일하다면 ARB에 대해 어떻게 작동합니까?
질문 3- 궁극적으로 1.4 프로파일의 프레임 버퍼 기능을 원합니다. 최대 하드웨어 호환성 범위를 갖기 위해 어떤 확장 및 기능 세트를 사용해야합니까?