glCopyTexImage2D 作为 glReadPixels (OpenGL ES) 的替代品 [英] glCopyTexImage2D as alternative to glReadPixels (OpenGL ES)
问题描述
我目前正在使用 glReadPixels
抓取 OpenGL ES 游戏的屏幕截图.屏幕截图很棒,但是对 glReadPixels
的调用会导致游戏出现小问题.
I'm currently grabbing a screenshot of an OpenGL ES game using glReadPixels
. The screenshots are great however the call to glReadPixels
causes a small stutter in the game.
glCopyTexImage2D
已被建议作为 glReadPixels
的更有效替代品.glCopyTexImage2D
是如何工作的?对于某些情况,我正在使用 这个 Apple 方法.
glCopyTexImage2D
has been suggested as a more efficient replacement for glReadPixels
. How does glCopyTexImage2D
work? For some context I'm using this Apple method.
我对 OpenGL 比较陌生,因此非常感谢任何帮助 :-)
I'm relatively new to OpenGL so any help is much appreciated :-)
推荐答案
时间延迟是由于GPU和CPU之间传输大量内存造成的.这可以通过分块传输来解决,每帧传输一点点.但是,如果您从帧缓冲区中读取一系列帧,则图像会同时发生变化.
The time delay is caused by transferring a large amount of memory between GPU and CPU. This can be solved by transferring in chunks, a little bit per frame. But if you read from the framebuffer over a series of frame, the image would be changing meanwhile.
因此,您将视频 RAM 复制到视频 RAM 中(非常快),然后它不会随着您零碎地传输而改变.
So you make a copy, video RAM into video RAM (very fast), and then it won't change as you transfer it piecemeal.
这篇关于glCopyTexImage2D 作为 glReadPixels (OpenGL ES) 的替代品的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!