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

时间:2008-11-17 22:36:46

标签: 3d 2d hardware gpu hardware-acceleration

我正在编写一个具有3d加速功能的2D库,但我想以一种能够在旧硬件上高效运行的方式来实现。可能是typedef,用于隐藏目标模式不支持的选项/功能。 (也可能有仿真功能打开)

旧硬件有哪些功能?这里列出了我所知道的问题和事项。

  • Tiles,这将不受支持。它的旧版本,我的lib将支持像素访问
  • 滚动的单像素缓冲区。例GBA
  • 多个表面,表面到表面快速blt(无拉伸)
  • 具有表面到表面的多个表面快速拉伸(可能是模拟的?是否有任何HW拉伸图像?)
  • HW像素填充(我以为我看到DX中的选项)
  • HW透明色? (我认为在DX规格中看到的透明颜色)
  • 纹理,较旧的使用是2的幂。宽度不必与2的高度相同? (例如64x256),是否要求它们是相同的
  • 纹理,较新的HW可以有任何宽度和高度(或者这是谎言?)
  • 纹理可以是疯狂的格式(ARGB 8888,ABGR 8888,ABGR 2 10 10 10)

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

我还缺少什么?

1 个答案:

答案 0 :(得分:2)

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

  • 纹理需要2的幂, 宽度和高度可以任意 两个人的力量。
  • 没有力量的纹理 使用a启用2个约束 你可以测试的openGL扩展 for(并且几乎存在于所有 新硬件)。
  • 几个不同 纹理格式标准化 OpenGL,我不知道扩展 有任意纹理格式。

关于2D:

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

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