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 加速和一个库的主要内容,如果未能解决你的问题,请参考以下文章