2013-04-10 2 views
2

OpenGL 모드를 지원하는 Ogre3d 엔진을 사용하고 있습니다.어떤 상황에서 glGenBuffers/glGenBuffersARB가 실패합니까?

Ogre::ManualObject을 생성하는 Chunk이라는 개체가 있습니다. ManualObject의 생성은 새로운 스레드에 작업을 넣는 데 약간의 시간이 걸리기 때문에.

불행하게도, ManualObject의 생성을 스레딩 후 지금 다음 OgreException을 얻고있다 :

"GLHardwareVertexBuffer :: GLHardwareVertexBuffer의 GL 정점 버퍼를 생성 할 수 없습니다"

나는 코드로 보았다 그것이 실패하고있다. at this stage :

이것은 glGenB uffersARB()가 mBufferId를 제대로 채우지 않습니다.

이 문제의 원인은 무엇인지 알 수 없습니까?

+0

'glGenBuffersARB()'호출 전후에'glGetError()'가 알려주는 것은 무엇입니까? – user1118321

답변

7

ManualObject를 생성하는 데 약간의 시간이 걸리기 때문에 새 스레드에 작업을 넣었습니다.

그게 바로 문제예요. OpenGL 컨텍스트는 한 번에 하나의 스레드에서만 활성화 될 수 있습니다. OpenGL 컨텍스트 바운드가없는 스레드에서 OpenGL 명령을 호출하면 오류가 발생합니다.

+0

감사합니다. 그래서이 작업의 가장 좋은 길은 하나의 스레드가 그래픽 작업에 전념하는 것입니다. Ogre를 통해 OpenGL 컨텍스트를 바인딩 할 스레드를 지정하는 적절한 방법은 무엇입니까? –

+0

@RazorStorm : 유감스럽게도 Ogre 엔진을 사용한 적이 없으므로 먼저 설명서를 살펴 봐야합니다. – datenwolf

+0

좋아, 문제 없어요! 나는 문서/소스를 살펴보고 내가 뭔가를 찾을 수 있는지 알아 보겠다. –

관련 문제