2011-08-17 54 views
0

我想绘制一个地图(ANSI C,C99不能用于由于Windows兼容性)游戏,使用GL加速图形,虽然游戏是一个顶级的游戏,使用纹理四边形下载2D透视图。 处理时间图的流行观点似乎使用了一个GL顶点缓冲对象,我正要写这个对象。然而,我意识到我想要一些瓷砖超出垂直边界,伪造一个倾斜的鸟瞰图。这将使任何正上方的区块被部分覆盖。 如果我在这里使用VBO,我需要一次绘制整个tilemap。这意味着我后来绘制的任何对象都将直接位于tilemap之上。VBO的地图(绘制顺序和倾斜的空中2D)

对这个问题最热门的方法是什么?我应该首先绘制地图,然后是实体(玩家/敌人),然后是多余的垂直空间,以便覆盖实体,最后在两者上显示效果? (如拍摄,爆炸等)。但是这会给我不被地形覆盖的镜头问题,并且如果我改变了顺序,笨拙地覆盖大型爆炸的地形。 或者,我可以对所有可视对象进行排序,并以自顶向下的方式绘制它们,但这意味着我需要经常更换纹理,因为在此特定情况下,按纹理进行排序不会有太大帮助。

同样,我希望能够动态地修改网格中每个顶点的颜色,以便实体可以将颜色投射到地图中。根据我的理解,实现这个目标的方法是使用顶点着色器。它是否正确?

编辑:最后一件事。如果我绘制一个比屏幕大的瓦片地图的VBO,通过翻译,GL会自动剔除超出视野的面孔,或者每次移动“相机”时都需要重新构建VBO吗?

回答

1

VBO只是图形内存中保留的一块抽象内存。您可以根据需要将数据放置在任何布局和布局中。您可以使用一个VBO来存储几个独立的网格。 gl {Vertex,Normal,TexCoord,Color,Attrib}指针函数用于设置内存中的偏移量,这意味着进程地址空间或偏移到绑定的VBO中。

此外一次可以容易地通过在索引缓冲器选择approriate第一元件或索引绘制绑定的数据的子集仅与任一调用glDrawArraysglDrawElements

所以,不,你不必画完整的维也纳国际组织。

0

我其实回答了我自己的问题。我需要将地图分成两部分:顶部有空白空间的块,然后是剩余空间。效果将分两次绘制,“常规”和“顶部”“图层”

我觉得在周围放置一个无用的问题非常糟糕,所以如果某些管理员需要清除它,请继续。