防止等距艺术透支

时间:2012-10-19 14:59:55

标签: sdl game-engine isometric

背景

我正在创建一个游戏,通过绘制等距瓷砖来实现等距透视世界。我当前的实现是天真的,使用画家的方法,从底部到顶部,从底部到顶部绘制,使用平铺图像中的表面blits。

问题:

我很担心(可能是过度的,请告诉我,如果是这种情况)关于透支。这是单层瓷砖的一个小快照:

Overdraw

以粉红色点亮的区域是从后到前,从下到上的方法不止一次将像素点亮到画布的区域。这是一个小而人为的例子,但在实践中我希望能够完成更多这样的事情:

Credit eBoy

(图片来源eBoy

使用像这样复杂的图像和基于图块的实现,在最终图像合成之前,每个屏幕像素被绘制几次,这感觉它真的效率很低。由于这些只是2D图像,最后是一位alpha遮罩,所以没有3D的担忧(例如没有浪费的照明或变换数学),但它似乎仍然应该更优雅确定是否应该根据最终构图中是否遮挡像素来确定像素的方法。

方案吗

到目前为止,我提出的最佳解决方案是:

  • 反转绘图顺序并从上到下绘制从上到下。
  • 保持每像素一位的伪z缓冲区,记录是否已经绘制了一个像素。
  • 如果尚未绘制部分像素,则仅绘制图块。

有更好的方法吗? blit操作是否足够高效,我在风车上倾斜?

1 个答案:

答案 0 :(得分:1)

风车。 尤其是,如果您使用的是OpenGL加速的SDL2 blits。