내 응용 프로그램에는 A와 B 두 개의 스레드가 있습니다. A는 기본 스레드이고 B는 내 비디오 스레드입니다. 비디오 스레드에는 OpenGL 함수가 제대로 작동하는 초기화 된 OpenGL 컨텍스트가 있습니다. 그러나 스레드 A에서 OpenGL 함수를 호출 할 때 함수가 1282 오류 (GL_INVALID_OPERATION)로 실패했습니다 내 주 스레드 (A)에서 OpenGL 함수를 호출 할 수 있습니까?다른 스레드에서 OpenGL 함수를 호출하십시오.
4
A
답변
10
느린 콘텐츠의 실제 배경 렌더링을 수행하지 않는 한, 이는 아마도 성능 델타를 제공하지 않을 것입니다.
Windows에서 열린 gl 컨텍스트는 스레드 당 있습니다. 열린 gl 함수를 호출하기 전에 작업자 스레드에서 wglMakeCurrent를 호출해야합니다.
Open GL은 스레드로부터 안전하지 않습니다. 동일한 문맥을 여러 스레드에 대해 현재 상태로 만들려고해도 스레드가 멈추지 않습니다. 그것은 단지 폭발 할 것입니다.
+0
다른 스레드에서 호출 된 이후 텍스처 ID를 만들지 못했던 같은 문제 glGenTexture()가있었습니다. 일부 방어 수표가 추가되었습니다. glGetError() *가 작동하는 것처럼 보였지만주의를 기울였습니다. 그러나, 그것은 오류를 해결하지 못했고, 나는 무한 루프에 갇혀있다. while (glGetError()) {...} 절대로 끝나지 않았습니다. –
3
GL은하지 스레드 안전 이며, 따라서 당신이 개 다른 스레드에서 GL 함수를 호출 할 수 없습니다. 뮤텍스를 사용하여 각 gl 부분을 보호해야합니다. 그러면 예상되는 성능 향상과 뮤텍스 잠금 및 아마도 필요한 컨텍스트 스위칭 오버 헤드가 발생합니다.
관련 문제
- 1. 다른 스레드에서 OpenGL 그래픽을 그리는 방법?
- 2. 다른 JS 함수에서 easySlider 애니메이션 함수를 호출하십시오.
- 3. js 함수를 호출하십시오.
- 4. 서버에서 jquery 함수를 호출하십시오.
- 5. 함수를 반복적으로 호출하십시오.
- 6. URL을 통해 JS 함수를 호출하십시오.
- 7. 변수 이름에있는 javascript 함수를 호출하십시오.
- 8. 주기적으로 TinyMCE의 triggerSave 함수를 호출하십시오.
- 9. 비 객체에서 getDOM() 함수를 호출하십시오.
- 10. Wordpress - 특정 순서로 함수를 호출하십시오.
- 11. 정의되지 않은 함수를 호출하십시오. mssql_connect()
- 12. 다른 스레드에서 호출합니다.
- 13. Android의 기본 스레드에서 OpenGL 사용
- 14. jQuery AJAX 호출 결과를 얻는 방법 다른 함수를 호출하십시오.
- 15. 작업자 스레드의 주 스레드 콜백 함수를 호출하십시오.
- 16. 다른 프로젝트에서 webservice를 호출하십시오.
- 17. CakePHP foreach 루프를 호출하여 함수를 호출하십시오.
- 18. 인스턴스가 생성되기 전에 비 멤버 함수를 호출하십시오.
- 19. div가 visibility에서 숨겨지면 Javascript 함수를 호출하십시오.
- 20. 치명적 오류 : 정의되지 않은 함수를 호출하십시오. sem_get()
- 21. Boost MPL : 존재하는 경우에만 (구성원) 함수를 호출하십시오.
- 22. page postback 후 document.ready 함수를 호출하십시오.
- 23. 다른 스레드에서 예외 처리
- 24. 해당 개체 외부에서 자바 스크립트 함수를 호출하십시오.
- 25. C#에서 패키지 함수를 호출하십시오. PLS-00306
- 26. 치명적 오류 : 비 객체에서 prepare() 함수를 호출하십시오.
- 27. 문자열에 배열의 항목이 포함되어 있으면 함수를 호출하십시오.
- 28. 치명적 오류 : 정의되지 않은 함수를 호출하십시오. mysqli_connect()
- 29. Div를로드 한 후 javascript 함수를 호출하십시오.
- 30. Jquery를 사용하여 선택시 함수를 한 번만 호출하십시오.
왜 그렇게하고 싶은지 잘 모르겠습니다. 제발 좀 더 자세히 설명해주세요. – batbrat