2017-04-09 7 views
0

glfwsfml을 사용하고 OpenGL 버전에서 몇 가지 장애물을 만나는 내 Mac에서 opengl을 배우고 있습니다.Xcode에서 OpenGL 버전 - glfw 대 sfml

나는 코드를 실행하면 : sfml

Renderer: Intel(R) Iris(TM) Graphics 6100 
OpenGL version supported: 2.1 INTEL-10.22.25 
glsl: 1.20 

xcode 프로젝트 내 설정인가 또는 기본 프레임 워크 설정입니다에

printf ("Renderer: %s\n", glGetString (GL_RENDERER)); 
printf ("OpenGL version supported: %s\n", glGetString (GL_VERSION)); 
printf("glsl: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION)); 

glfw

Renderer: Intel(R) Iris(TM) Graphics 6100 
OpenGL version supported: 4.1 INTEL-10.22.25 
glsl: 4.10 

에를 ? 내가 변경할 수있는 방법이 있습니까 sfmlOpenGL 4.1 그래서 나는 glsl도 4.1 얻을?

glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 4); 
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 1); 

수행 sfml이 비슷한 있습니다

glfw

이 설정이?

답변

2

SFML을 사용하면 sf::ContextSettings을 사용하여 OpenGL 버전을 지정할 수 있습니다.

sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, settings); 

결론이 SFML는 이전 버전과의 호환성 컨텍스트를 필요로한다는 것입니다 : 당신이 그것을 만들 때

sf::ContextSettings settings; 
settings.depthBits = 24; 
settings.stencilBits = 8; 
settings.majorVersion = 4; 
settings.minorVersion = 1; 
settings.attributeFlags = sf::ContextSettings::Default; 

그런 다음 당신은 sf:Window에 전달합니다. 내부적으로 SFML은 일부 기존 OpenGL 기능을 사용하기 때문에

SFML과 관련된 모든 것에 SFML을 사용하지 않는 경우. 그런 다음 GLFW를 계속 사용하는 것이 좋습니다.

+0

'settings'를'window'에 넣음으로써 마술을합니다. 나는 인터페이스 그래픽을 위해'sfml'을 사용하는데, 적어도 순간적으로'glfw'에서 다루기가 어렵습니다. – sooon

+0

SFML은 모든 OpenGL 컨텍스트 버전과 함께 사용할 수 있지만 SFML 그래픽 모듈의 2.x 버전은 고정 기능 파이프 라인 만 사용합니다 (향후 3.0에서 변경 예정). 그래서 당신이 당신 자신의 그림을 그리는 한, 당신은 문제가 없어야합니다. – Mario