大家好,我一直在为2D游戏优化我的渲染技术。现在,我以最现代的方式渲染四边形,可以使用VAO绘制顶点,然后为渲染索引,如下所示:
public void render(Map<TexturedModel,List<Entity>> entities)
{
for(TexturedModel model : entities.keySet())
{
if(model!= null)
{
prepareTexturedModel(model);
List<Entity> batch = entities.get(model);
for(Entity entity : batch)
{
prepareInstance(entity);
GL11.glDrawElements(GL11.GL_TRIANGLES,model.getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT,0);
}
unbindTexturedModel();
}
}
}
PrepareTexturedModel(model)仅将纹理绑定到四边形,prepareInstance(entity)仅设置变换矩阵和要绘制的实体的其他属性。目前,Im制作的游戏使用“单纯形噪声”创建2D地形,并创建了一个新的宽度为16,高度为16的四边形,并且仅渲染了屏幕上的四边形,因此根据屏幕的大小,将渲染或多或少的四边形,其大小会增加或减少性能分别。
上面的图像应该显示瓷砖是如何分离的,水不显示边框,因为它是32x32四边形而不是16x16的集合,只是使纹理看起来更大。
我的主要问题是,我该如何优化这些图块的渲染,也不仅仅是不必使它们单独可编辑,所以我正在考虑的一个想法是将相似的图块组合在一起,然后制作一个更大的图块,然后对其进行纹理处理,这将减少顶点的数量,但是我很困惑如何进行此操作。
预先感谢您的帮助!