WebGL에 SwapBuffer 기능이 없다는 것을 알았습니다. WebGL에서 상태를 변경하고 WebGL에서 여러 객체를 그리는 방법은 swapBuffer가 내부적으로 호출 된 시점입니다. WebGL에 의해?WebGL의 swapBuffer OpenGL 호출은 어디에 있습니까
답변
먼저 OpenGL에 SwapBuffers가 없습니다. SwapBuffers is a platform specific thing that is not part of OpenGL.
어떤 경우에도 SwapBuffers에 해당하는 것이 WebGL에서 암시 적이지만. drawingbuffer (예 : drawArray, drawElements, clear ...)에 영향을주는 WebGL 함수를 호출하면 다음에 브라우저가 페이지를 합성 할 때 효과적으로 "swapbuffers"됩니다.
사실 "교환"또는 "복사"여부는 브라우저에 달려 있습니다. 예를 들어 앤티 엘리 어싱이 활성화 된 경우 (기본값) 브라우저는 내부적으로 브라우저가 내부 멀티 샘플 버퍼를 실제로 표시 될 수있는 것으로 변환하는 "복사"또는 "블릿"을 효과적으로 수행합니다.
또한 스왑이 암시 적이기 때문에 WebGL은 다음 렌더링 명령 전에 drawingBuffer를 지 웁니다. 이것은 브라우저가 내부적으로 스왑하거나 복사하기로 결정했는지에 관계없이 동작을 일관되게 만드는 것입니다.
{preserveDrawingBuffer: true}
을 getContext
에 두 번째 매개 변수로 전달하여 스왑 대신 사본을 강제로 (그리고 지우는 것을 방지 할 수 있습니다.) 물론 스왑을 허용하지 않는 비용이 많이 듭니다.
또한 스왑 자체 및 발생시기는 반 정의되지 않습니다. 즉 gl.drawXXX
또는 gl.clear
을 호출하면 브라우저에 다음 번 컴포지트에서 스왑/복사하도록 지시하지만 그 시간과 브라우저가 실제로 다른 이벤트를 합성하는 시간 사이에 처리 될 수 있습니다. 스왑은 현재 이벤트가 종료 될 때까지 발생합니다 (예 : requestAnimationFrame
이벤트). 이벤트가 종료되는 시간과 브라우저에서 더 많은 이벤트를 합성하는 시간 (예 : mousemove
) 사이에 스왑이 발생합니다.
{preserveDrawingBuffer: true}
을 사용하지 않으면 한 이벤트 동안 항상 모든 그림을 처리해야합니다. 대개 requestAnimationFrame
입니다. 그렇지 않으면 일치하지 않는 결과가 발생할 수 있습니다.
AFAIK, swap buffers
전화는 일반적으로 GL 상태로 변경되지 않습니다. 그리기 호출 사이에 그 상태를 변경하는 GL 호출이 많이 있습니다. 버퍼 스와핑에 관해서는, 브라우저는 렌더링 코드가 반환 된 콜백 이후에 언젠가 당신을 위해 그것을 수행한다. (그렇다. 실제로 일어날 직접 컨트롤은 없다.
- 1. umount 시스템 호출은 어디에 있습니까?
- 2. .paginate (...) 호출은 어디에 속합니까?
- 3. 어디서나 WebGL의 공용 사양이 있습니까?
- 4. AWS WAF API 호출은 어디에 문서화되어 있습니까?
- 5. EXE 파일의 메서드 호출은 어디에 있습니까?
- 6. WebGLU에는 WebGL의 모든 기능이 있습니까?
- 7. MacOSX에있는 OpenGL 헤더 파일은 어디에 있습니까?
- 8. OpenGL 3의 모든 glTexParameters는 어디에 있습니까?
- 9. 생성자 호출은 어디에 저장됩니까? 스택 또는 힙?
- 10. 벌집에서 "라이트 아웃 모드"를 수행하는 API 호출은 어디에 있습니까?
- 11. 문자열을 인코딩하거나 문자열을이 파일에 인코딩해야하는 호출은 어디에 있습니까?
- 12. AutoMapper 용 CreateMap 호출은 어디에 두어야합니까?
- 13. Modernizr : WebGL과 WebGL의 비교 테스트
- 14. WebGL의 z 버퍼가 작동하지 않습니다.
- 15. elm-webgl의 스텐실 버퍼링
- 16. glTextureVertexPointer는 어디에 정의되어 있습니까?
- 17. WebGL의 Alpha 기능?
- 18. WebGL의 시공간 큐브
- 19. WebGL의 텍스처 표시
- 20. WebGL의 곡면에 곡선 그리기
- 21. Webgl의 줌 불변 개체
- 22. WebGL의 왜곡/물
- 23. iPhone에서 GL_TEXTURE_MIN_LOD은 어디에 있습니까?
- 24. WebGL의 쉐이더 프로그램 전환
- 25. Webgl의 점 조명 문제
- 26. WebGL의 내 첫 셰이더
- 27. WebGl의 버그 Phong 쉐이더
- 28. GL_LINES와 WebGL의 FXAA
- 29. WebGL의 투영 텍스처 매핑
- 30. 일부 컴퓨터에서 OpenGL의 검은 색 화면 (PIXELFORMATDESCRIPTOR/SwapBuffer?)