像素数据如何从GPU传输到视频内存?

时间:2015-07-20 15:30:10

标签: opengl video graphics

我写了一个测试动画程序,它有500个半透明的椭圆随机浮动。其主要目的是测试软件矢量图形库的性能。我得到大约170 FPS,这已经足够了。

首先,我在普通记忆中画出整个画面。然后我需要一种方法将这些数据传输到监视器访问的视频内存。 memcpy直接对视频内存很简单,但现代操作系统不允许这样做。我可以在这里考虑两个选项。

第一个是使用系统blitting功能,例如Windows中的BitBlt或Unix系统中的XPutImage

第二种是将整个帧作为OpenGL纹理复制到GPU,然后将整个纹理绘制到屏幕上。

我使用等效的SDL包装进行了测试。速度的表现几乎相同,因为大部分时间花在创建要绘制的帧上。

一个明显的区别是,通过GPU可以产生更加平滑的结果。我看到的不是0而是更少的撕裂。我能想到的一个可能原因是,可能会将像素从GPU移动到视频内存专门用于最大速度,这与正常的内存复制不同,因此屏幕显示更加“即时”。< / p>

回到这个问题的标题,像素数据如何从GPU传输到视频内存?这只是对memcpy的简单调用还是应用了一些特殊处理?如果是这样,那是什么?

0 个答案:

没有答案