最近我在Javascript(this源代码)中创建了here小实验。 这是利用HTML5画布对象在网页内模拟旧视频游戏引擎的一点尝试。所以我模拟了索引颜色图像,伪颜色调色板和调色板移位,将来我也会实现颜色循环技术。
由于这个应用程序强烈基于像素操作,我需要在低级别工作:我开始使用
2dcontext.getImageData()和
2dcontext.putImageData()函数。不幸的是,使用这些功能简单地渲染640x480图像会导致帧速率危险地降低。
我已经测试了另一种创建一系列带有
2dcontext.fillRect()的1x1矩形的替代方法,但这似乎要慢得多。
我know WebWorkers不是解决方案:它们只会在多线程情况下提供帮助。
我认为可能将所有计算转移到GPU而不是使用像
2dcontext.getImageData()和
2dcontext.putImageData()这样的昂贵的方法可能有所帮助。但是最好的方法是什么,考虑到我总是需要一直访问单像素颜色信息,如果我想实现调色板移位和颜色循环技术? WebGL是一个解决方案吗?是否可以创建可以执行我需要的自定义着色器程序(link)?
非常感谢你的支持!