gpu、旧硬件、3d 加速和一个库

Posted

技术标签:

【中文标题】gpu、旧硬件、3d 加速和一个库【英文标题】:gpu, old hardware, 3d acceleration and a lib 【发布时间】:2010-09-22 18:30:20 【问题描述】:

我正在编写一个具有 3d 加速功能的 2d 库,但我想以一种可以在旧硬件上有效运行的方式来完成它。可能使用 typedef 来隐藏您的目标模式不支持的选项/功能。 (也可能开启了仿真功能)

旧硬件有哪些功能?这是我知道的问题和事情的列表。

瓷砖,这将不受支持。它太旧了,我的库将支持像素访问 具有滚动功能的单像素缓冲区。大湾区示例 具有表面到表面快速 blt(无拉伸)的多个表面 多表面,表面到表面快速 blt 与拉伸(也许这是模拟的?有任何硬件拉伸图像吗?) 硬件像素填充(我以为我在 DX 中看到了该选项) HW 透明色? (颜色是透明的,我以为我在 DX 规格中看到过) 纹理,旧的使用是 2 的幂。宽度不必与高度是 2 的幂吗? (例如 64x256),是否要求它们相同 纹理,较新的硬件可以有任何宽度和高度(或者这是一个谎言?) 纹理可以采用疯狂的格式(ARGB 8888、ABGR 8888、ABGR 2 10 10 10)

另外,我不能对纹理 blit 做纹理吗?就像在硬件中从纹理 A 复制 60x40 到 B 一样? 纹理也可以在调色板中吗? (我不会支持这个) 最后我应该记住着色器 8)

我还缺少什么?

【问题讨论】:

【参考方案1】:

您指的是什么 3D 加速?如果是OpenGL兼容硬件:

纹理必须是 2 的幂, 宽度和高度可以有任意 两个的幂。 没有力量的纹理 2个约束启用了 您可以测试的 openGL 扩展 对于(并且几乎存在于所有 新硬件)。 几个不同的 纹理格式标准化 OpenGL,我不知道扩展 具有任意纹理格式。

关于二维:

普通硬件 2D 加速支持 blitting,但不支持拉伸。拉伸可用作“视频加速”。例如,在 X11 中,您可以使用 xv 扩展来加速拉伸,但仅限于 YUV 颜色空间。 对于真正快速的图像绘制操作,请查看 Imlib2。它可以在软件中完成所有工作,但速度非常快。如果 3D 硬件加速不可用,也许是正确的方法。 2D hw 加速在性能上有所不同,例如 X11 RENDER 加速经常被 Imlib2 击败。 http://docs.enlightenment.org/api/imlib2/html/

一个有趣的项目也可能是 DirectFB,它试图大量使用硬件 2D 加速:http://www.directfb.org/

【讨论】:

以上是关于gpu、旧硬件、3d 加速和一个库的主要内容,如果未能解决你的问题,请参考以下文章

使用GPU硬件加速FFmpeg视频转码

GPU硬件加速

beaglebone black 是不是支持 gpu 硬件加速?

null transform hack 强制使用硬件加速

硬件彩票:GPU和神经网络加速器

几个平台环境里视频编解码和图像scale的硬件加速的方法