Is there any way to make a row of tiles work with GL_QUAD_STRIP?
如果我想为游戏绘制一排2D正方形瓷砖,则显而易见的方法是使用GL_QUADS并为每个瓷砖指定4个顶点和纹理坐标。 但是,由于这是一排方形方块,因此每个方块的最后两个坐标是下一个方块的前两个坐标,这听起来像是GL_QUAD_STRIP的设计目的。 您最终不必重复所有内部顶点。
当您尝试应用纹理时,问题就来了。 当您将顶点作为四边形的"末端"绘制时,您已经将纹理坐标绑定到了顶点,但是当您想将最后两个顶点重用为下一个四边形的起点时,则需要为它们重新分配新的纹理坐标,除非 您正在使用的图块直接与您的图块集纹理上使用的图块相邻。
有什么办法可以使这项工作吗? 还是只需要坚持使用GL_QUADS并两次指定所有内部顶点?
s的更高版本的OpenGL引入了一种在从顶点数组绘制时重新启动图元的方法。 您要做的是指定一个特殊的虚拟元素索引,该索引而不是引用顶点数组中的元素来指示新的基本链的开始,例如四边形条:http://www.opengl.org/wiki/Vertex_Specification# Primitive_Restart s>
但是,如果要使瓷砖独立纹理化,则它们不会共享顶点。 顶点不仅是位置,而且是纹理坐标和分配给它的其他属性。 因此,实际上您不是在绘制四边形条(共享顶点),而是绘制独立的四边形。
有一种方法可以做到,但是没有有用的方法可以做到。 也就是说,没有一种方法不会添加更多索引。 这样做实际上只是将您的
因此,我建议您坚持使用