因为OS为了 让跟多的进程能够宏观同时运行 需要在Virtual Memory和 Memory之间做动态透明的数据转移
比如把长时间不用的页给移动到外面 虚拟内存 用到时 在用页面置换算法啥的 这样子那么原来的内存可能会移动位置
甚至 我们用到他时 他可能在Virtual Memory中 还要在往内存调 那这个肯定是很费时间的
而游戏实时性要求很高 肯定是不行的 所以 当我们要往 视频帧缓存中读取或写数据时 一定要 锁定他
不让OS在我们读取 或者写入表面时 换那个表面在内存中的位置
但在下一次 时 缓存的位置有可能被移动到别的位置
PS:我感觉我猜 一般内存置换 只会移动堆区的 栈区应该不会移动吧 因为堆区 没办法 直接访问
是通过指针 或者引用 间接寻址的 这样即便动内存位置 他的逻辑位置还在
1、锁定内存是实时应用程序存在的最重要的问题之一。在实时环境中,进程必须能够保证可连续驻留在内存中,以缩短延迟并防止换页和交换。“
2.为什么锁定一般LockMemory()函数参数都是帧缓存的二次指针呢
因为前面我们说了 这些Buffer在内存中的位置会变化 我们要每次都修改
指向该缓存的指针的值 就要用到二次指针