Mac OSX Yosemite 버전 10.10과 최신 SDL 버전 (2.0.3)을 실행 중입니다.SDL 2.1 Mac OSX에서 OpenGL 컨텍스트를로드 할 수 없습니다. Yosemite
OpenGL 버전 3 이상을 사용하려고합니다. 아무 것도하지 않으면 내 OpenGL 버전은 2.1 INTEL-10.0.86
을 반환합니다.
OpenGL 명령이 작동하지만 이것은 분명히 필요한 버전이 아닙니다.
그래서 몇 가지 조사를 한 후에 SDL로 버전을 변경하는 방법은 SDL을 초기화 한 후 컨텍스트를 정의하기 전에 SDL_GL_SetAttribute(SDL_GLattr attr, int value)
함수를 사용하는 것입니다. 그래서 여기 내 코드입니다 :
if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
{
printf("Failed to initialize SDL. Error (SDL): %s.\n", SDL_GetError());
return false;
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); //I read somewhere that this may help
window = SDL_CreateWindow("Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, (SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN));
if (!window)
{
printf("Failed to create the window. Error (SDL): %s.\n", SDL_GetError());
return false;
}
context = SDL_GL_CreateContext(window);
이 코드를 사용하여 OpenGL을 버전은 4.1 INTEL-10.0.86
를보고합니다. 이 잘 작동하지만 내 OpenGL 호출을 더 이상 작동하지 그래서 함수를 호출 한 후 OpenGL 오류 확인하고 1282
반환합니다.
이상한 것은 내가이
...
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
//SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); //I read somewhere that this may help
...
에 코드를 변경할 때 그것은 동일한 출력 4.1 INTEL-10.0.86
를 제공하고는 OpenGL 기능 작업 같은 OpenGL은 오류 (1282)과 없음을 반환한다는 것입니다.
마지막 시도도 다른 결과로 실패했습니다.
이...
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); //I read somewhere that this may help
...
반환 된 새의 OpenGL 버전 null
하지만 난 1로 2 및 minor_version에로에서 major_version을 변경하면 내 원래 버전 2.1 INTEL-10.0.86
에 반환 : 여기에 내 코드이었다.
누구든지이 문제에 대한 해결책을 알고 있습니까? 몇 가지 추가 연구를하고 후 --Edit--
, 모든 상황에 전화가 제대로 초기화되지 후에는 OpenGL은 1282을 반환합니다. 이로 인해 SDL이 컨텍스트를 제대로 만들지 못하는 버그 일 수 있다고 생각됩니다. (나는 정직하게 그다지 모른다. 그래서 나는 사지에있다). SDL에 버그를 제출하고 도움이되는지 확인해 보겠습니다.
가 ... 내 OpenGL은 통화 중에 [glMatrixMode는, glLoadIdentity 함수는, glLoadIdentity 함수가,을 glBegin가 ] 더 이상 작동하지
하드웨어 및 드라이버가 버전 3을 지원합니까? "인텔"은 나를 의심하게 만듭니다. – molbdnilo
@molbdnilo https://developer.apple.com/opengl/capabilities/를 사용하면 4.1이 지원됩니다. HD 그래픽 4000을 사용하고 있습니다.또한 http://support.apple.com/kb/HT5942에서 Intel HD Graphics 4000을 검색하십시오. – TrevorPeyton
또한 질문을 통해 내 질문을 개선하거나 문제가 무엇인지 이해하는 데 도움이됩니다. – TrevorPeyton