0
已解决
Run&Jump 渲染引擎详解
https://wenda.codingtang.com/questions/16596/ 使用1.5版本
希望可以对其他**者提供帮助
(这可能是全问答渲染速度最快的一个游戏)
以前,大部分游戏**者的渲染引擎无非清空屏幕重绘,优化的也只是清空屏幕的速度,非常之少
但是我就想啊,为啥要清空整个屏幕进行重绘呢?移动的只是一部分屏幕啊!
所以Run&Jump是这么做的:
首先,使用两个变量存储人物位置:
struct xy{int x,y} pl,bpl; //pl:当前位置,bpl:上次位置
渲染时,使用:
void render(){
gotoxy(bpl位置); //移动光标
color(...); //修改颜色
cout<<" "; //使用空格填充覆盖
gotoxy(pl位置); //移动光标
color(...); //修改颜色
cout<<"PL"; //渲染玩家
}
这样就完成了高速的渲染
但是这样渲染还有一个毛病(也是1.0的BUG)
如果键盘点的过快(多线程),同时运行了两个渲染函数
第一个函数的gotoxy()后第二个函数的cout直接输出了,就会导致重影(上一次的没有清掉/多输出)
这样可以使用一个变量来避免同时运行:
bool IsRender;
...
void render(){
if(IsRender) return;
IsRender=1;
...
IsRender=0;
}
(是人都能想到)
完美!
