2012-04-16 46 views
0

我正在制作多人游戏,并将在玩家附近展示其他玩家。最多有16名玩家可以靠近玩家,但也可能有0.我想要做的是设置16个空的VBO,以便他们在客户端收到它们时准备加载角色的位置。创建空的VBO有效吗?如果不是,我应该如何处理可能存在或不存在的数据,具体取决于服务器发送客户端的数据?如何在渲染可能显示或不显示的网格时处理VBOs?

+1

我认为你在这里过于复杂的事情。创建并绑定你的VBO或VBO,然后在某处你有一个玩家状态对象。或者玩家在那里(标志为真)并且你画网格,或者他不是(标志为假),而你没有。看起来像一个简单的IF在从0到15的循环中给我:)。 – Robinson 2012-04-16 20:44:09

+0

嗯......如果数据不存在......你可以......也许...... **不渲染它**? – 2012-04-16 20:48:46

回答

4

你的问题让我困惑。为什么使用VBO来存储位置? VBO可以只绘制你正在绘制的任何顶点,并且可以在绘制时根据modelMatrix移动位置。

简单的伪代码:

LoadVBO(player_model); 

for(int i=0;i<16;i++){ 
    if(player[i].visible) { 
    modelMatrix = player[i].position; 
    glUniform(modelMatrix); 
    DrawVBO(player_model); 
    } 
} 

如果这还不够,请给出更多的信息。为什么试图绘制一个空的vbo,而不是设置一个跳过绘图调用的标志?