Я хочу получить кадр (изображение), который будет отображаться на экране, непосредственно из VRAM, если это возможно, в бинарном формате (RAW) с использованием SDL/OpenGl/DirectX или любого другого API.Как получить видеовыход или рамку из VRAM
Я хочу свести к минимуму задержку захвата экрана, а затем сохранить его в изображение и преобразовать его в двоичный или base64.
Я понимаю, но мне нужно отправить это изображение по сети, поэтому для уменьшения латентности и получения передачи в реальном времени мне нужно это сделать. Что касается функции SDL «SDL_RenderReadPixels()», это очень медленно. –
@hemantc: Почему вы думаете, что glReadPixels увеличивает вашу задержку? Если что-то это * уменьшает * задержку, потому что glReadPixels вводит точку синхронизации, а драйверы оптимизированы, чтобы закончить рендеринг результата, возвращаемого glReadPixels, и как можно быстрее вернуться к нему. Основная цель PBO - дать возможность реализовать некоторую свободу действий, когда и как завершить рендеринг и передачу (что дает пропускную способность пролета, но на самом деле увеличивает задержку на glReadPixels). – datenwolf
@hemantc: Также вы можете делать glReadPixels перед сменой буфера; однако я настоятельно рекомендую не «установить срок», а только начать передачу, если вы можете утверждать, что он закончит до свопа. В противном случае вы можете пропустить крайний срок. – datenwolf