OpenGL 함수 만 사용하여 백 버퍼의 크기를 픽셀 단위로 얻는 표준 방법이 있습니까? 가장 가까운 것은 뷰포트의 크기를 쿼리하는 것이지만 백 버퍼 크기와 항상 일치하는지 의심 스럽습니다. 예를 들어 glReadPixels에 제공 할 수있는 최대 너비 및 높이 값을 찾고 있습니다.OpenGL에서 백 버퍼 크기를 얻는 방법은 무엇입니까?
답변
backbuffer는 윈도우 프레임 버퍼 평면 세트 (구성에 따라 앞면 색, 뒷면 색, 깊이, 스텐실 등)의 일부입니다. 그들 모두가 함께 있기 때문에 그들은 모두 같은 차원을 가지고 있습니다. 표준 프레임 버퍼가 가시적 윈도우에 연결되기 때문에 접근 가능한 부분은 윈도우 크기에 의해 결정됩니다.
그러나주의해야 할 중요한 사항 중 하나가 있습니다. 윈도우의 프레임 버퍼는 화면 프레임 버퍼의 슬라이스 일뿐입니다. 윈도우가 이동하거나 크기가 조정 된 경우에만 스크린 프레임 버퍼의 슬라이스의 오프셋과 보폭이 변경됩니다. 또한, 윈도우가 (부분적으로) 다른 윈도우에 의해 가려진 경우, 윈도우의 폐색 된 부분이 프레임 버퍼에 기여하지 않는다는 것을 의미합니다. 부분적으로 다른 창에 의해 덮여 프레임 버퍼에서 읽기, 거기에 정의되지 않은 내용 또는 occluding 창의 내용으로 끝날 수 있습니다.
최신 운영 체제에서는 창을 합성 할 수없는 오프 스크린 영역으로 렌더링되어 합성 창 관리를 지원합니다.
답변 해 주셔서 감사합니다. 어떤 환경에서는 렌더링 윈도우를위한 전용 후방 버퍼가 아니라 "OS 데스크탑 백 버퍼"의 예약 된 공간 만 있다고합니다. OpenGL에 glReadPixels가 있다는 사실은 백 버퍼에 렌더링 된 이미지가 창을 닫더라도 항상 읽을 수 있어야한다는 것을 의미하지 않습니까? – Trillian
@ Trillian : 아니요, glReadPixels는 읽기 전용으로 선택된 프레임 버퍼의 현재 내용을 읽습니다. 프레임 버퍼는 윈도우의 속성이므로 glReadPixels을 사용하여 읽은 데이터에 윈도우 내용에 대한 손상이 표시됩니다. 그런 점에서 glReadPixels는 BitBlt (...)와 크게 다르지 않습니다. 괜찮은 OS 또는 그래픽 시스템은 컨텐이 손상되어 다시 그려야하는 경우 메시지를 창에 보냅니다. 렌더링 된 내용이 손상되지 않도록하려면 PBuffer 또는 Framebuffer 객체를 사용하십시오. – datenwolf
- 1. OpenGL에서 버텍스 버퍼 언로드
- 2. OpenGL에서 프레임 버퍼 객체와 픽셀 버퍼 객체의 차이점은 무엇입니까?
- 3. 쉐이더 프레임 버퍼 리드 백
- 4. 웹 페이지의 글꼴 크기를 얻는 방법은 무엇입니까?
- 5. NSButton의 기본 크기를 얻는 방법은 무엇입니까?
- 6. 자바 스크립트에서 이미지의 크기를 얻는 방법은 무엇입니까?
- 7. 100 % 확대시 DIV의 크기를 얻는 방법은 무엇입니까?
- 8. 장치의 화면 크기를 얻는 방법은 무엇입니까?
- 9. BerkeleyDB에서 값의 크기를 얻는 방법은 무엇입니까?
- 10. 핸들에서 아이콘의 크기를 얻는 방법은 무엇입니까?
- 11. 비디오의 크기를 킬로바이트 단위로 얻는 방법은 무엇입니까?
- 12. 숨겨진 부모가있는 요소의 크기를 얻는 방법은 무엇입니까?
- 13. PHP에서 SWF 파일 크기를 얻는 방법은 무엇입니까?
- 14. js로 html 문서 크기를 얻는 방법은 무엇입니까?
- 15. 장치의 총 RAM 크기를 얻는 방법은 무엇입니까?
- 16. 어셈블리를 사용하여 아키텍처 크기를 얻는 방법은 무엇입니까?
- 17. 4GB보다 큰 파일 크기를 얻는 방법은 무엇입니까?
- 18. mysql 데이터베이스의 크기를 얻는 방법은 무엇입니까?
- 19. NetworkStream에서 읽을 바이트 배열/버퍼 크기를 예측하는 방법은 무엇입니까?
- 20. OpenGL에서 FPS를 계산하는 방법은 무엇입니까?
- 21. OpenGL에서 이미지를 넘기는 방법은 무엇입니까?
- 22. OpenGL에서 gluPerspective를 선언하는 방법은 무엇입니까?
- 23. OpenGL에서 값싼 그림자를 만드는 방법은 무엇입니까?
- 24. 동적으로 TCP 버퍼 크기를 알아내는 방법
- 25. DirectX 7을 사용하여 백 버퍼 가져 오기
- 26. OpenGL에서 행렬 스택의 현재 크기를 얻으려면 어떻게해야합니까?
- 27. mysql에서 레코드 크기를 얻는 방법
- 28. OpenGL에서 카메라 위치를 변형하십시오.
- 29. WebView 콘텐츠 크기를 얻는 방법
- 30. 백 스페이스를 캡처하는 방법은 무엇입니까?
OpenGL 3.x/4.x에서 또는 ARB_framebuffer_object가 지원되는 경우 [glGetRenderbufferParameter] (http://www.opengl.org/sdk/docs/man3/xhtml/glGetRenderbufferParameter)를 사용하여 쿼리 할 수 있어야합니다. xml). 그렇지 않으면 창 크기를 가져 오는 것 외에 다른 옵션도 없습니다. – Damon
@Damon Smart,하지만 난 그냥 시도하고 renderbuffer 바인딩 된 경우 renderbuffer 매개 변수를 얻으려고하면 GL_INVALID_OPERATION이 발생합니다. – Trillian