【问题标题】:Techniques for dynamic (algorithmic) graphics动态(算法)图形技术
【发布时间】:2008-10-06 13:29:06
【问题描述】:

我正在为32 bit processor with limited memory(512k 闪存,32k RAM)编写应用程序。

此设备上的 display 是 128x160 和 16 位颜色,如果我要在处理器上缓冲它,通常会消耗 40k 内存。我没有那么多内存,所以我正在寻找动态生成屏幕数据的技术、技巧、窍门和想法。

可能有帮助的事情:

  • 也许你知道有这种限制的资源
  • 也许您已经动态生成了吸引人的图形
  • 在我扫描显示器时,是否有一种通用算法可用于在运行中组合程序内存中的元素(包括 Alpha 混合)
  • 简单的矢量渲染技术(或免费 (bsd/mit/apache) 源代码)
  • ???

我有一个乘法器,但没有浮点处理器。显示器本身有一个非常简单的控制器和用于显示器的内存——但读写成本很高,所以如果可以避免的话,我不想把它用作我的工作区。

-亚当

【问题讨论】:

    标签: graphics user-interface embedded svg


    【解决方案1】:

    在某种程度上,您与 Tandys、Spectrums 和早期 PC 时代的游戏开发人员几乎相同。所以,这是我的建议:

    您应该阅读 Michael Abrash 关于计算机图形学的著作。它们是在浮点协处理器是可选硬件的时代编写的,它们描述了在旧的(据说是“糟糕的”)软件渲染时代使用的许多基本技术(Bresenham 线等) .

    你可以阅读他的大部分“黑皮书”here

    此外,您可能还可以找到很多以前大多数人用来学习图形编程的旧 BBS 文件here。只需搜索图形、线条等等。

    希望有帮助!

    更新:我还记得在我第一次尝试在屏幕上绘制东西时使用this。不知道我花了多少时间试图理解它背后的数学(好吧,公平地说,我当时像 15 岁)。对 3D 的非常好的(和简单的)介绍,以及关于变换、多边形填充和插值的非常好的首映。

    【讨论】:

      【解决方案2】:

      你会在屏幕上显示什么样的数据?

      如果不是摄影图像,您可以考虑使用调色板。例如:每像素 8 位的 256 调色板需要 20kb,(加上查找表的 256 x 2 字节)至少优于 40kb。

      【讨论】:

        【解决方案3】:

        我相信处理这种情况的基本技术是将屏幕分成窄的水平条纹,并且只在 RAM 中缓冲两个这样的条纹。将显示一条条纹,同时向下渲染下一条。当扫描“光束”击中下一个条纹(并触发中断让您捕捉)时,您交换两者并开始向下绘制下一个条纹。

        这样做的一个令人讨厌的副作用是,您对渲染每个条带所花费的时间有限制。所以我想坚持使用一些无聊但性能可预测的东西会很诱人,比如精灵。

        有点离题,但这就是 Nintendo DS 3D 硬件的工作原理。如果您尝试围绕同一 y 坐标渲染太多多边形,您会看到它 - 随着屏幕刷新超过渲染硬件,多边形会随机闪烁并消失。

        另外,我赞同其他发帖人的建议,即您使用调色板渲染。在 16 位像素上进行快速数学运算非常困难,但如果您对如何布置调色板很聪明,则在 8 位像素上会更快。

        【讨论】:

          【解决方案4】:

          结合漂亮图形和低内存的一些想法:

          • 将背景和精灵存储在 Flash 中。
          • 使用调色板将动态生成的图形存储到 RAM 中的一半字节。
          • 使用 LCD 驱动程序的窗口功能仅更新您需要的屏幕部分。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-12-09
            • 2014-08-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-14
            相关资源
            最近更新 更多