gpu、旧硬件、3d加速和lib

gpu、旧硬件、3d加速和lib,3d,2d,hardware,gpu,hardware-acceleration,3d,2d,Hardware,Gpu,Hardware Acceleration,我正在编写一个2d库,它将具有3d加速功能,但我希望它能在旧硬件上高效运行。可能键入def以隐藏目标模式不支持的选项/功能。(也可能会打开仿真功能) 老HW会做些什么?这是我知道的问题和事情的清单 瓷砖,这将不受支持。它的老,我的库将支持像素访问 带滚动的单像素缓冲区。示例GBA 具有面到面快速blt的多曲面(无拉伸) 带拉伸的面对面快速blt多曲面(可能这是模拟的?有任何硬件拉伸图像吗?) HW像素填充(我想我看到了DX中的选项) 透明色?(颜色是透明的,我想我在DX规格中见过) 纹理,旧的

我正在编写一个2d库,它将具有3d加速功能,但我希望它能在旧硬件上高效运行。可能键入def以隐藏目标模式不支持的选项/功能。(也可能会打开仿真功能)

老HW会做些什么?这是我知道的问题和事情的清单

  • 瓷砖,这将不受支持。它的老,我的库将支持像素访问
  • 带滚动的单像素缓冲区。示例GBA
  • 具有面到面快速blt的多曲面(无拉伸)
  • 带拉伸的面对面快速blt多曲面(可能这是模拟的?有任何硬件拉伸图像吗?)
  • HW像素填充(我想我看到了DX中的选项)
  • 透明色?(颜色是透明的,我想我在DX规格中见过)
  • 纹理,旧的使用是2的幂。宽度不必与高度的2次方相同?(示例64x256),是否有任何要求它们相同
  • 纹理,新的硬件可以有任何宽度和高度(或者这是一个谎言?)
  • 纹理可以采用疯狂的格式(ARGB 8888、ABGR 8888、ABGR 2 10 10)
还有,我不能做纹理到纹理的blit?与HW中从纹理A复制到纹理B的60x40相同? 纹理也可以在调色板中吗?(我不支持) 最后,我应该记住着色器8)


我还缺少什么?

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

  • 纹理必须是2的幂, 宽度和高度可以是任意的 二的力量
  • 没有力量的纹理 使用一个 可以测试的openGL扩展 对于(并且几乎在所有 新硬件)
  • 几种不同的 纹理格式是标准化的 OpenGL,我不知道它的扩展 具有任意纹理格式
关于2D:

  • 普通硬件2D加速支持布点,但不支持拉伸。拉伸可用作“视频加速”。例如,在X11中,可以使用xv扩展来加速拉伸,但只能在YUV颜色空间中
  • 要获得真正快速的图像绘制操作,请查看Imlib2。它用软件做所有事情,但速度惊人。如果3D硬件加速不可用,也许是正确的方法。2D hw加速在性能上有所不同,例如,X11渲染加速经常被Imlib2打败
一个有趣的项目是DirectFB,它试图大量使用硬件2D加速: