glClientWaitSync 기능을 사용하여 오해가 있습니다. 펜싱과의 동기화
내가 그 같은 것을 사용하고 인정 :glDraw(...);
sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
glDraw(...);
glClientWaitSync(sync, GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000);
glDeleteSync(sync);
내가 잘 OpenGL을 위키를 이해한다면, 우리는 이가지 경우
이첫 번째 경우 : OpenGL을 4.5 :이 경우, glClientWaitSync 후에, 우리는 위키에 쓰기 때문에 첫 번째 그리기 만 수행됩니다.
OpenGL 4.5에서는이 플러시가 특별하게 이루어집니다. 처음으로 특정 동기화 객체를 기다리고 있고 동기화 객체를 만든 것과 동일한 컨텍스트에 대기 시간이있는 경우 플러시는 동기화 객체 바로 다음에 실행 한 것처럼 동작합니다. 따라서 동기화 객체를 만든 후에 다른 OpenGL 명령을 실행 한 경우 플러시되지 않습니다.
두 번째 경우 : OpenGL 4.4 또는 하위 :이 함수는 glFlush 함수와 "전역 적으로"동일한 동작을하기 때문에 두 그리기가 모두 수행되었음을 확신 할 수 있습니까? 그런 식으로 모든 명령 버퍼가 플러시 된 경우 OpenGL 4.4에서 라운드 로빈 방식을 사용하여 영구 매핑을 실제로 사용하는 방법은 무엇입니까?
그래서 잘 이해했다면, 4.4 패션으로 플러시를하는 것은 펜스가 끝나기 전에 모든 명령이 끝나고 어떤 것이 시작될지를 보장 할 것입니다. 4.5 방법으로, 이후의 것들은 의무적으로 시작할 필요가 없습니까? –