问题标题: 酷町堂:Run&Jump 渲染引擎详解

0
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;
}

(是人都能想到)

完美!


0
0
我要回答