我最近完成了将系统数组加载到VBO中的系统。该系统允许四边形共享顶点以节省大量内存。例如,100x100四边形阵列通常使用100x100x4 = 40000个顶点(每个四边形4个顶点),但使用此系统时,它只使用101x101 = 10201个顶点。当你进入更大的尺度时,这是一个巨大的节省空间。
我的问题是,为了单独构造每个四边形,每个顶点需要一个“UV”坐标对(或“ST”坐标)来映射纹理的一部分。这导致了问题,我如何独立地将每个四边形纹理化?即使两个相同的纹理四边形彼此相邻,我也不能对两个四边形使用相同的纹理坐标。如下图所示:
*每个四边形的尺寸为16x16像素,纹理坐标的范围为0到1.
为了使事情变得更复杂,数组中的一些四边形甚至可能不存在(因为那部分地形只是一个空块)。正如您可能已经猜到的那样,这是针对每个人都试图制作的2D平铺游戏的渲染引擎。
有没有办法使用顶点保存技术对纹理四边形进行纹理处理,还是只需要废弃此方法并使用效率较低的方法?
答案 0 :(得分:2)
你不能。
OpenGL中的顶点是一组数据。它们可能包含位置,但它们也包含纹理坐标或其他内容。每个顶点,位置/坐标/等的每个集合必须是唯一的。因此,如果您需要将相同的位置与不同的纹理坐标配对,那么您将拥有不同的顶点。