小编nae*_*ego的帖子

OpenGL tile渲染:最有效的方法?

我正在创建一个基于图块的2D游戏,作为学习基本"现代"OpenGL概念的一种方式.我正在使用OpenGL 2.1的着色器,并熟悉渲染管道以及如何在屏幕上实际绘制几何体.我想知道的是组织tilemap快速有效渲染的最佳方法.我想到了几种可能的方法:

1.)将表示单个图块(顶点和纹理坐标)的四边形存储在VBO中,并使用单独的draw*调用渲染每个图块,将其平移到屏幕上的正确位置,并使用uniform2i在该纹理图集中为该特定图块指定位置;

2.)保持包含屏幕上每个图块的VBO(已计算的屏幕坐标和纹理图集坐标),使用BufferSubData每帧更新图块但使用单个draw*调用;

3.)保持包含静态NxN"块"块的VBO,绘制许多块在屏幕上至少部分可见,并将它们各自转换到位.

*如果可能的话,我想远离最后一个选项,除非渲染64x64的块不是太低效.瓷砖以这种尺寸的块加载到内存中,即使一次只能在屏幕上看到大约20x40个图块,我也必须一次渲染多达四个块.这种方法还会以其他几种方式使我的代码复杂化.

那么,哪些是渲染瓷砖屏幕最有效的方法呢?有没有更好的方法?

opengl graphics performance 2d

10
推荐指数
1
解决办法
7378
查看次数

标签 统计

2d ×1

graphics ×1

opengl ×1

performance ×1