我希望通过为VESA视频内存实现更好的双缓冲来提高图形代码的性能。
背景:
我在 x86_64,nasm 中写了一个简单的生命游戏实现。它在QEMU中启动,切换到64位并从一些伪随机初始状态运行游戏。
我正在使用内存缓冲区来存储“下一个”状态,并在每个tick的结尾处将整个缓冲区复制到视频mem位置,然后将其清零。在我目前的情况下,每个滴答上交换/更改的数据几乎是2MiB,可能是不必要的。这种方法在320x200x8bpp下运行良好,但现在在VESA 640x480x24bpp中它太慢了。
我确信有更好的方法可以做到这一点,我的第一个想法就是交换缓冲区的内存地址。我找了一种方法来做但却找不到编程参数的任何东西。我可以获得VESA模式信息等,但是有没有办法设置一些值?
或许我做错了,还有更好的/其他方法吗?
一些注意事项: