2012-03-04 3 views
1

Windows 7 및 Visual Studio 2010 Express를 사용하고 있습니다. 오류없이 컴파일 할 수 있도록 OpenGL 프로젝트에 포함해야하는 최소한의 헤더 및 라이브러리는 무엇입니까? GLUT, GLFW 또는 GLEW 같은 추가 라이브러리가 없으면 최소한에 대해서 이야기합니다.OpenGL 프로젝트를 성공적으로 컴파일하려면 VC2010에 무엇을 포함해야합니까?

내가해야 할 일은 추가 의존성에 opengl32.lib를 추가하는 것이지만, 작동하지 않는 것처럼 보입니다. VC는 "glGenBuffers()"와 같은 일부 OpenGL 구문을 인식 할 수 없습니다.

답변

0

Windows 시스템에서 <GL/GL.h>으로 선언 된 함수 프로토 타입은 OpenGL 버전 1.1 (현재 약 20 년 전임)에서만 사용됩니다. glGenBuffers (1.5와 함께 제공)과 같은 그 이상의 확장 또는 버전에 대한 모든 함수는 함수에 대한 포인터를 검색하기 위해 wglGetProcAddress을 사용하여 동적으로로드해야합니다 (물론 버전/확장이 하드웨어 및 드라이버에서 지원되는 경우) .

이것은 지루한 작업 일 수 있으므로 GLEW와 같은 자동 확장 관리를위한 라이브러리가 있으며이 라이브러리를 사용하여 필요한 변수 포인터에 필요한 함수 포인터를 표시하므로 glGenBuffers 등을 직접 사용할 수 있습니다. 평범한 함수처럼, 그러나 그들은 어디에도 선언되지 않았다. <GL/GL.h>.

VS2010에서 OpenGL 프로젝트를 성공적으로 컴파일하려면 opengl32.lib에 대한 링크 이외의 다른 작업은 필요하지 않지만 버전 1.1 이상의 기능이 필요할 때마다 확장 프로그램을 직접 관리하거나 GLEW 같은 당신을 위해.

+0

자세한 답변을 주셔서 감사합니다, 나는 지금 볼 :) 내가 GLEW를 피할 수 있으면 좋겠는데, 내가 Visual Studio에서 이상한 메모리 오류가 발생하면 그것을 포함 할 때마다 (그러나 그것은보아야 만하는 것처럼 보입니다. 그 원인은 무엇입니까 ... – IanDess

+0

@IanDess 그 자체로 확장 기능을 다루는 것이 고통 스러울 수 있기 때문에 좋은 생각 일 것입니다. 글쎄, 어렵지도 복잡하지도 않은 작업이지만,'' glewInit'을 사용하고, 여러분이 좋아하는 모든 함수를 사용할 수 있습니다. 그리고 1.1 기능 만 사용하는 것은 요즘 옵션이 아닙니다. 오류 때문에 어쩌면 gl 컨텍스트를 만든 후에'glewInit'을 호출하는 것을 잊었을 수도 있습니다.이 경우'glGe nBuffers'와 그 친구는 유효한 값을 가지고 있지 않으며 사용하려고 할 때 액세스 위반 (또는 유사한 메모리 오류)이 발생합니다. –

+0

OMG 젠장, 너는 나를 구해 줬어. 고마워. 나는 며칠 전에 openGL을 시작 했으므로 모든 라이브러리 및 기타 라이브러리의 바다에서 꽤 길을 잃었으므로 glewInit과 같은 간단한 것을 간과하는 것은 많이 발생합니다. (네, 그게 문제였습니다! 다시 한번 감사드립니다! – IanDess

0

glGenBuffer은 OpenGL 1.5부터 사용할 수 있습니다. Windows 구현은 1.1입니다. 기본적으로 GLEW가 필요합니다. :).

하지만 OpenGL 1.1의 경우에는 그랬던 것처럼 opengl32.lib에 링크 만하면됩니다.

+0

답변 주셔서 감사합니다, 나는 지금 :) 나는 내가 GLEW를 피할 수 있으면 좋겠다. 나는 Visual Studio에서 이상한 메모리 오류가 발생할 때마다 그것을 포함시킬 것이다. (그러나 나는 그것이 무엇을 일으키는지를 알아야만하는 것처럼 보인다. 그 ... – IanDess

관련 문제