我想在使用 GL 加速图形的游戏(ANSI C、C99 由于 Windows 兼容性而无法使用)中绘制瓷砖地图,尽管该游戏是使用纹理四边形的自上而下的 2D 透视图。处理时间图的流行观点似乎是使用我即将编写的 GL 顶点缓冲区对象。然而,我意识到我想要一些瓷砖超出垂直界限,假装倾斜的鸟瞰图。这将使块正上方的任何东西都被瓷砖部分覆盖。如果我在这里使用 VBO,我需要一次绘制整个瓷砖地图。这意味着我之后绘制的任何对象都将直接位于图块地图的顶部。
解决这个问题的最明智的方法是什么?我应该先绘制瓷砖地图,然后是实体(玩家/敌人),然后是多余的垂直空间,以便它们覆盖实体,最后是在两者上显示的效果?(例如射击、爆炸等)。但这会给我带来射击没有被地形覆盖的问题,如果我改变顺序,地形会笨拙地覆盖大爆炸。或者,我可以对所有视觉对象进行排序并以自上而下的方式绘制它们,但这意味着我需要经常更改纹理,因为在这种特定情况下按纹理排序并没有太大帮助。
同样,我希望能够以动态方式修改网格中每个单独顶点的颜色,以便实体可以将颜色投射到地图中。据我了解,实现这一点的方法是使用顶点着色器。这个对吗?
编辑:最后一件事。如果我通过平移绘制一个比屏幕大的瓦片地图的 VBO,GL 是否会自动剔除视线之外的面孔,还是每次移动“相机”时都需要重新调整 VBO?